ubuntu下Python導入自定義模塊的方法
當在python程序中導入自定義模塊時,若出現“Import Error:no module named xxx”表明系統在python的搜索路徑(PYTHONPATH)中找不到該模塊,需要把該模塊添加到python的搜索路徑中。
要用import mymodule導入自定義的模塊,其必須在python的搜索路徑中,一般有三種方法可以采用:
1.將你自定義的模塊(.py文件)放置在python的任意搜索路徑下(可以在python中輸入import sys和sys.path 查看搜索路徑)
2.修改環境變量PYTHONPATH以包含用戶自定義模塊的路徑
臨時修改:在終端輸入export PYTHONPATH=/mymodule directory:$PYTHONPATH
,利用echo $PYTHONPATH 命令可查看是否將路徑添加成功。該方法在當前終端下有效,但若關閉終端后重新打開,則會失效。
徹底修改:要想使修改始終有效,則需要修改用戶或系統的環境變量配置文件。以修改用戶的環境變量配置文件.bashrc或.profile為例(兩個文件均在用戶主目錄下/home/用戶名,.bahsrc包含專用於你的bash shell的bash信息,當登錄以及每次打開新的shell時,該文件被讀取;.profile包含專用於你的shell信息,當用戶登錄時,該文件僅僅執行一次,它設置一些環境變量,執行用戶的.bashrc文件)。cd到用戶主目錄下,打開.bashrc或.profile文件,在末尾添加一行export PYTHONPATH=/mymodule directory:$PYTHONPATH,保存退出后,執行source .bashrc 或source .profile命令使修改生效。修改系統環境變量配置文件的過程也類似,只不過相應的文件要到/etc 目錄下去找。
vi ~/.bashrc
export PYTHONPATH=$PYTHONPATH:/data/xm/jinnanbisai/project/code/Detectron/detectron/core
source ~/.bashrc
3.修改python的sys.path變量,在導入自定義模塊前,執行以下操作。此方法也只能臨時起作用,退出python下次再進來就失效了。
import sys
sys.path.append('mymodule directory')
原文:https://blog.csdn.net/Blateyang/article/details/78753051
python模塊以及導入出現ImportError: No module named 'xxx'問題---https://blog.csdn.net/damotiansheng/article/details/43916881
關於 python ImportError: No module named 的問題---https://my.oschina.net/leejun2005/blog/109679
python自定義模塊導入方法,文件夾,包,文件夾的區別---https://blog.csdn.net/a583179/article/details/79084195
python模塊導入,網上介紹的資料很多,方法也眾說紛紜。根據自己的實踐,感覺這個方法最簡單直接,而且可以與主流的python ide生成的工程是一樣的。
規則只有三條
1. 嚴格區分包和文件夾。包的定義就是包含__init__.py的文件夾。如果沒有__init__.py,那么就是普通的文件夾。
2. 導入package。 在python 安裝目錄的site-package文件夾中新建xxx.pth,內容是需要導入的package所在的文件夾路徑。
3. 導入模塊。就是一般的模塊導入寫法,注意只要包路徑,不要文件夾路徑。
示例:
以上面工程為例,
總共有4個包,分別是:package,package1, package2, folder2.(注意,folder1不是package,因為它沒有__init__.py)。
這些包所在的文件夾共有兩個,test以及test/folder1。 注意,package2所在的文件夾是test,雖然它是包含在folder2里面,但是folder2是一個包,不是一個文件夾。
因此在site-package中新建一個XXX.pth, 里面添加上test以及test/folder1的絕對路徑即可。
使用pth文件,在 site-packages 文件中創建 .pth文件,將模塊的路徑寫進去,一行一個路徑,以下是一個示例,pth文件也可以使用注釋:
# .pth file for the my project(這行是注釋)
E:\DjangoWord
E:\DjangoWord\mysite
E:\DjangoWord\mysite\polls
模塊導入比較簡單,只要依次填包名就可以了,但注意只要包名
如果需要導入module2,則import folder2.package2.module2
如果需要導入module1,則import package1.module1 注意,路徑中沒有folder1,因為folder1是文件夾,不是包。
Python在不同目錄下導入模塊的方法---https://blog.csdn.net/zhili8866/article/details/52980924
Python3導入自定義模塊的3種方式---https://blog.csdn.net/pwc1996/article/details/52577148
開始
第一種,直接 import
這里有個大前提,就是你的py執行文件和模塊同屬於同個目錄(父級目錄),如下圖:
- main.py 和 pwcong模塊同在python目錄
- 執行文件為main.py
- pwcong文件夾為一個模塊
我把pwcong模塊提供的函數寫在 __init__.py
里,里面只提供一個 hi
函數:
# pwcong 模塊的 __init__.py # -*- coding: utf-8 -*- def hi(): print("hi")
執行文件main.py直接import模塊:
# main.py # -*- coding: utf-8 -*- import pwcong pwcong.hi()
接着我們運行一下main.py可以看到命令行窗口輸出了一句 hi
,第一種方式完成。
使用模塊方式為:先導入-》接着輸入模塊.變量|函數, 如上面例子的 pwcong.hi()
第二種,通過sys模塊導入自定義模塊的path
如果執行文件和模塊不在同一目錄,這時候直接import是找不到自定義模塊的。如下圖:
pwcong模塊在python目錄下
sys模塊是python內置的,因此我們導入自定義模塊的步驟如下:
先導入sys模塊
然后通過sys.path.append(path) 函數來導入自定義模塊所在的目錄
導入自定義模塊。
這時候 main.py 這樣寫:
# main.py # -*- coding: utf-8 -*- import sys sys.path.append(r"C:\Users\Pwcong\Desktop\python") import pwcong pwcong.hi()
最后執行main.py文件,最終輸出 hi ,第二種方式完成。

- 執行文件main.py在main目錄下
- pwcong模塊在python目錄下
我們創建一個 module_pwcong.pth 文件,里面內容就是 pwcong模塊所在的目錄:
C:\Users\Pwcong\Desktop\python
將該 module_pwcong.pth 文件放到這里:
python安裝目錄\Python35\Lib\site-packages
例如:
然后 main.py 導入並使用自定義模塊:
# -*- coding: utf-8 -*- import pwcong pwcong.hi()
最后執行 main.py 文件,可以輸出 hi
,第三種方式完成。
結束!
調用文件中的包中包的模塊
cd /home/xm/anaconda3/envs/py27/lib/python2.7/site-packages
vi module_detectron.pth
編輯內容:/data/xm/jinnanbisai/project/code/Detectron