在編寫Python程序時候命名在IDE中運行正常可是到了服務器上就出現各種問題,經常發送的就是如下的錯誤:
ImportError:No module named ‘hello’
這個錯誤在學習初期都會遇到尤其是當引入第三方模塊(從網上下載的或者是自己寫的)的時候可能會發生。那是為什么呢?在Python中這些東西叫做模塊,可是在系統中其實就是目錄,既然你要使用這些模塊也就是目錄里面的內容,那么Python解釋器肯定要能找到才行,其實就跟系統中的環境變量一樣,編譯安裝程序的時候經常要手動設置環境變量,為什么呢?同樣的道理,如果你不設置,那么你使用這些命令的時候,就要使用絕對路徑或者進入到命令所在目錄才可以,如果想要隨時隨地使用就必須設置環境變量,告訴系統去哪里找這些命令。知道原因之后我們看看Python是怎么找到這些模塊的。
Python解釋器如何找到模塊
sys.path
這個函數輸出的是一個列表,它就包含了搜索模塊的路徑,這個列表的第一個路徑就是當前路徑,所謂當前路徑就是你運行Python程序的當前路徑,比如你的程序放在/home/zhangsan/test.py,在運行這個程序的時候,這個程序的sys.path列表的第一個路徑就是/home/zhangsan,其余的就是系統默認的路徑,如下圖:
Python解釋器就是通過這個類別來搜索模塊的,如果你引入的模塊不在這個列表里那么顯然就找不到了,也就由了上面的錯誤。那如何添加呢?
既然sys.path輸出是一個列表,那么我們就可以在列表中添加,看下圖:
兩個列表是不是不同呢?

#!/usr/bin/env python # -*- coding: utf-8 -*- import sys print sys.path # 添加 sys.path.insert(1, "/work/apps/mymodules") print sys.path
這里為什么使用insert呢,其實使用append也可以,使用插入就是為了讓它快速找到。這種是動態添加的,作用范圍僅僅是當前py文件,如果很多py文件都引入了其他模塊怎么辦?一個一個修改太麻煩了。
PYTHONPATH
這個是環境變量,系統默認沒有,需要自己設置。
編輯 vim ~/.bashrc
export PYTHONPATH=$PATHONPATH:/YOU_MODULE_DIRECTORY
然后執行 source~/.bashrc 使其生效即可。不過不推進這種方式,因為它會改部prefix何exec_prefix都是/usr/local
.pth文件
這種方式很簡單便於管理,在需要大量添加外部路徑的時候非常推薦,而且是永久生效。啟動Python程序時候,解釋器就會遍歷目錄,遇到pth就會讀取這個文件中的內容並添加到sys.path中。
Python37\Lib\site-packages
其內容就是路徑
文章轉自:https://www.cnblogs.com/rexcheny/p/9504892.html