Python模塊查找路徑


  在編寫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
View Code

  這里為什么使用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

 

 

 

  


免責聲明!

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



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