分類:
python中,每個py文件被稱之為模塊,每個具有__init__.py文件的目錄被稱為包。只要模
塊或者包所在的目錄在sys.path中,就可以使用import 模塊或import 包來使用 如果你要使用的模塊(py文件)和當(dāng)前模塊在同一目錄,只要import相應(yīng)的文件名就好,比 如在a.py中使用b.py: import b 但是如果要import一個不同目錄的文件(例如b.py)該怎么做呢? 首先需要使用sys.path.append方法將b.py所在目錄加入到搜素目錄中。然后進(jìn)行import即 可,例如 import sys sys.path.append('c:\xxxx\b.py') # 這個例子針對 windows 用戶來說的 大多數(shù)情況,上面的代碼工作的很好。但是如果你沒有發(fā)現(xiàn)上面代碼有什么問題的話,可要 注意了,上面的代碼有時會找不到模塊或者包(ImportError: No module named xxxxxx),這是因為: sys模塊是使用c語言編寫的,因此字符串支持 '\n', '\r', '\t'等來表示特殊字符。所以 上面代碼最好寫成: sys.path.append('c:\\xxx\\b.py') 或者sys.path.append('c:/xxxx/b.py') 這樣可以避免因為錯誤的組成轉(zhuǎn)義字符,而造成無效的搜索目錄(sys.path)設(shè)置。 sys.path是python的搜索模塊的路徑集,是一個list 可以在python 環(huán)境下使用sys.path.append(path)添加相關(guān)的路徑,但在退出python環(huán)境后 自己添加的路徑就會自動消失了! 3、搜索路徑和路徑搜索 模塊的導(dǎo)入需要叫做“路徑搜索”的過程。 搜索路徑:查找一組目錄 路徑搜索:查找某個文件的操作 ImportError: No module named myModule 這種錯誤就是說:模塊不在搜索路徑里,從而導(dǎo)致路徑搜索失敗!
導(dǎo)入模塊時,不帶模塊的后綴名,比如.py >>> import sys >>> sys.path 導(dǎo)入時,Python會自動由左到右搜索這個列表中每個目錄。
解決方法如下: 1. 使用PYTHONPATH環(huán)境變量,在這個環(huán)境變量中輸入相關(guān)的路徑,不同的路徑之間用逗號 (英文的!)分開,如果PYTHONPATH 變量還不存在,可以創(chuàng)建它! 這里的路徑會自動加入到sys.path中,永久存在于sys.path中而且可以在不同的python版本 中共享,應(yīng)該是一樣較為方便的方法。 C:\Users\Administrator\Desktop\test\module1.py: def func1(): print("func1") 將C:\Users\Administrator\Desktop\test添加到PYTHONPATH即可直接import module1,然后 調(diào)用:module1.func1()即可。 2. 將自己做的py文件放到 site_packages 目錄下 3. 使用pth文件,在 site-packages 文件中創(chuàng)建 .pth文件,將模塊的路徑寫進(jìn)去,一行一 個路徑,以下是一個示例,pth文件也可以使用注釋: # .pth file for the my project(這行是注釋),命名為xxx.pth文件 C:\Users\Administrator\Desktop\test 這個不失為一個好的方法,但存在管理上的問題,而且不能在不同的python版本中共享。 4. 在調(diào)用文件中添加sys.path.append("模塊文件目錄"); 5. 直接把模塊文件拷貝到$python_dir/Lib目錄下。 通過以上5個方法就可以直接使用import module_name了。
參考文章:http://my.oschina.net/leejun2005/blog/109679
我的同類文章
|
|