python 明明安裝模塊,卻導入不了 no module name all



本人碰到一個實例:
test_123的腳本如下(通過traceroute來生成路由跟蹤圖表):

#!/usr/bin/python
import os,sys,time,subprocess
import warnings,logging

warnings.filterwarnings("ignore",category=DeprecationWarning)
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import traceroute

domains = raw_input('Please input on or more IP/domains:')
target = domain.split(' ')
dport = [80]
if len(target) >= 1 and target[0]!='':
res,unans = traceroute(target,dport=dport,retry=2)
res.graph(target="> test.svg")
time.sleep(1)
subprocess.Popen("/usr/bin/convert test.svg test.png",shell=True)
else:
print "IP/domain number of errors,exit"


但是運行報錯:no module name all

但是直接import scapy是沒問題的。因此,判斷可能是找不到all.py這個文件

查一些網上的資料,發現如下這種方法:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>通過sys.path.append這樣來增加
對於模塊和自己寫的程序不在同一個目錄下,可以把模塊的路徑通過sys.path.append(路徑)添加到程序中。

對於仍然不能用,解釋器報錯說找不到你要的模塊 
No Module Named '自己的模塊'
在程序開頭加上:

import sys
sys.path.append(’引用模塊的地址')

例子如下 : 
在 /usr/local/sp_system/sp_os中有一個os_sp.py 
需要使用 os_sp.py 中的 def foo

則應該 
import sys
sys.path.append(’/usr/local/sp_system/sp_os')
from sp_os import os_sp
os_sp.foo()

也可以
import sys
sys.path.append(’/usr/local/sp_system/sp_os/os_sp')
import os_sp
os_sp.foo()
特別注意如果 os_sp 模塊調用了sp_system的別的包 則要用上一種方式 並注意級層

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>道理相通后,我的直接做法是
1、[root@redhat174 scapy]# pwd
/project/scapy/scapy-2.2.0/scapy
找到scapy模塊的python安裝包 

ls 一下發現果然里面有all.py

2、ls /usr/lib64/python2.6/site-packages 下面沒有找到scapy的相關信息

3、那事情就簡單了,cp -rf /project/scapy/scapy-2.2.0/scapy /usr/lib64/python2.6/site-packages 直接復制過去,或者直接軟鏈接過去

4、結果事情搞定腳本運行成功



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM