python模組以及匯入出現ImportError: No module named 'xxx'問題

來源:互聯網
上載者:User

標籤:

python中,每個py檔案被稱之為模組,每個具有__init__.py檔案的目錄被稱為包。只要模
塊或者包所在的目錄在sys.path中,就可以使用import 模組或import 包來使用
如果你要使用的模組(py檔案)和當前模組在同一目錄,只要import相應的檔案名稱就好,比
如在a.py中使用b.py: 
import b 

但是如果要import一個不同目錄的檔案(例如b.py)該怎麼做呢? 
首先需要使用sys.path.append方法將b.py所在目錄加入到搜素目錄中。然後進行import即
可,例如 
import sys 
sys.path.append(‘c:\xxxx\b.py‘) # 這個例子針對 windows 使用者來說的 
大多數情況,上面的代碼工作的很好。但是如果你沒有發現上面代碼有什麼問題的話,可要

注意了,上面的代碼有時會找不到模組或者包(ImportError: No module named 
xxxxxx),這是因為: 
sys模組是使用c語言編寫的,因此字串支援 ‘\n‘, ‘\r‘, ‘\t‘等來表示特殊字元。所以

上面代碼最好寫成: 
sys.path.append(‘c:\\xxx\\b.py‘) 
或者sys.path.append(‘c:/xxxx/b.py‘) 
這樣可以避免因為錯誤的組成逸出字元,而造成無效的搜尋目錄(sys.path)設定。 


sys.path是python的搜尋模組的路徑集,是一個list
可以在python 環境下使用sys.path.append(path)添加相關的路徑,但在退出python環境後
自己添加的路徑就會自動消失了!

3、搜尋路徑和路徑搜尋

模組的匯入需要叫做“路徑搜尋”的過程。

搜尋路徑:尋找一組目錄

路徑搜尋:尋找某個檔案的操作

ImportError: No module named myModule

這種錯誤就是說:模組不在搜尋路徑裡,從而導致路徑搜尋失敗!

匯入模組時,不帶模組的尾碼名,比如.py
Python搜尋模組的路徑:
1)、程式的主目錄
2)、PTYHONPATH目錄(如果已經進行了設定)
3)、標準串連庫目錄(一般在/usr/local/lib/python2.X/)
4)、任何的.pth檔案的內容(如果存在的話).新功能,允許使用者把有效果的目錄添加到模組搜尋路徑中去
.pth尾碼的文字檔中一行一行的地列出目錄。
這四個組建組合起來就變成了sys.path了,

>>> import sys>>> sys.path匯入時,Python會自動由左到右搜尋這個列表中每個目錄。

 

 

關於 python ImportError: No module named ‘xxx‘的問題?
解決方案如下:
1. 使用PYTHONPATH環境變數,在這個環境變數中輸入相關的路徑,不同的路徑之間用逗號
(英文的!)分開,如果PYTHONPATH 變數還不存在,可以建立它!
這裡的路徑會自動加入到sys.path中,永久存在於sys.path中而且可以在不同的python版本
中共用,應該是一樣較為方便的方法。
C:\Users\Administrator\Desktop\test\module1.py:
def func1():
    print("func1")

將C:\Users\Administrator\Desktop\test添加到PYTHONPATH即可直接import module1,然後
調用:module1.func1()即可。


2. 將自己做的py檔案放到 site_packages 目錄下


3. 使用pth檔案,在 site-packages 檔案中建立 .pth檔案,將模組的路徑寫進去,一行一
個路徑,以下是一個樣本,pth檔案也可以使用注釋:

# .pth file for the  my project(這行是注釋),命名為xxx.pth檔案
C:\Users\Administrator\Desktop\test
這個不失為一個好的方法,但存在管理上的問題,而且不能在不同的python版本中共用。


4. 在調用檔案中添加sys.path.append("模組檔案目錄");


5. 直接把模組檔案拷貝到$python_dir/Lib目錄下。

通過以上5個方法就可以直接使用import module_name了。

 

參考文章:http://my.oschina.net/leejun2005/blog/109679

python模組以及匯入出現ImportError: No module named 'xxx'問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.