7. Python3 模塊路徑問題徹解

7.1讓你的模塊可用

  • 將模塊放置在正確的位置,可用下面的函數(shù)查看“正確的位置”
>>> pprint.pprint(sys.path)
['',
 '/home/xx/$PYTHONPATH',
 '/usr/lib/python35.zip',
 '/usr/lib/python3.5',
 '/usr/lib/python3.5/plat-x86_64-linux-gnu',
 '/usr/lib/python3.5/lib-dynload',
 '/usr/local/lib/python3.5/dist-packages',
 '/usr/lib/python3/dist-packages']

注意:將自己的包/模塊 放入到這些個目錄中,即可用。

  • 告訴編譯器去哪里找,貌似這是更加通用的做法
  1. 編輯sys.path: 這是一種臨時配置的方式,再次打開python的時候路徑掉了。
>>> import flash
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'flash'
>>> sys.path.append('/home/xx/Codes/eclipse/pythonbook/xx/')
>>> pprint.pprint(sys.path)
['',
 '/home/xx/$PYTHONPATH',
 '/usr/lib/python35.zip',
 '/usr/lib/python3.5',
 '/usr/lib/python3.5/plat-x86_64-linux-gnu',
 '/usr/lib/python3.5/lib-dynload',
 '/usr/local/lib/python3.5/dist-packages',
 '/usr/lib/python3/dist-packages',
 '/home/xx/Codes/eclipse/pythonbook/xx/']
>>> import flash
>>> flash.flashprint('beauty')
Flash Print: beauty
  1. 標(biāo)準(zhǔn)的方法是:編輯PYTHONPATH環(huán)境變量,設(shè)置方法鏈接
sudo gedit /etc/environment # Terminal 打開環(huán)境變量文件
export PYTHONPATH=$PYTHONPATH:/home/xx/Codes/eclipse/pythonbook/xx/ # 文件中增加PYTHONPATH值
source /etc/environment # Terminal 中使之生效

效果是:

>>> pprint.pprint(sys.path)
['',
 '/home/xx/$PYTHONPATH',
 '/home/xx/Codes/eclipse/pythonbook/xx',
 '/usr/lib/python35.zip',
 '/usr/lib/python3.5',
 '/usr/lib/python3.5/plat-x86_64-linux-gnu',
 '/usr/lib/python3.5/lib-dynload',
 '/usr/local/lib/python3.5/dist-packages',
 '/usr/lib/python3/dist-packages']
>>> flash.flashprint('beauty')
Flash Print: beauty
  1. pth文件
    我的文件樹結(jié)構(gòu)如下
├── pythonbook
│   ├── xx
│   │   ├── flash.py
│   └── yy
│       ├── conf.pth
│       └── test.py

conf.pth 內(nèi)容

/home/xx/Codes/eclipse/pythonbook/xx/

test.py 內(nèi)容

print('YY is outputting')
import flash
flash.flashprint('beauty')
  • 直接運行test.py報錯,可是我明明在pth文件中指明了flash.py的路徑呀。盡管當(dāng)前文件夾('')是python編譯器查找的路徑,但還是需要將pth文件放到別的編譯器能夠查找的位置,比如'/usr/lib/python3/dist-packages'。這樣直接可以import該模塊了(不存在路徑問題)。
>>> pprint.pprint(sys.path)
['',
 '/usr/lib/python35.zip',
 '/usr/lib/python3.5',
 '/usr/lib/python3.5/plat-x86_64-linux-gnu',
 '/usr/lib/python3.5/lib-dynload',
 '/usr/local/lib/python3.5/dist-packages',
 '/usr/lib/python3/dist-packages']
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容