簡體   English   中英

如何為版本2和3設置不同的PYTHONPATH?

[英]How to set PYTHONPATH differently for version 2 and 3?

我們假設我在.bashrc設置PYTHONPATH如下:

export PYTHONPATH=$PYTHONPATH:/ver2packages

當我在Python 3中檢查我的python路徑時:

$ python3
>>> import sys
>>> print(sys.path)
['', '/home/user', '/ver2packages', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']

ver2packages ,如果包含與版本3的包具有相同名稱的包,則可能存在沖突和錯誤。

有沒有辦法為每個版本的Python設置pythonpath?

您可以使用路徑配置( .pth )文件為Python 2和Python 3設置不同的sys.path

例如,要為Python 2的sys.path添加目錄,請在任何Python 2站點包目錄中創建一個.pth文件(即由site.getsitepackages()site.getusersitepackages() ):

Python 2.7.11 (default, Dec  6 2015, 15:43:46) 
[GCC 5.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> site.getsitepackages()
['/usr/lib/python2.7/site-packages', '/usr/lib/site-python']

然后創建一個.pth文件(以root身份):

echo "/ver2packages" > /usr/lib/python2.7/site-packages/ver2packages.pth

有關更多信息,請參閱site模塊

對於Linux ,您可以創建指向庫文件夾的符號鏈接並將其放在目標版本中:

ln -s /your/path /usr/local/lib/python3.6/site-packages

這不是關於改變PYTHONPATH而是替代解決方案。

您的選項取決於操作系統。

對於ubuntu,如果你使用標准的python包......

如果您希望在系統范圍內執行此操作(並且您具有管理權限),則可以通過/usr/lib/pythonN.M/site.pysys.path添加其他路徑。

僅限於您自己,系統默認的site.py文件已將$HOME/.local/lib/pythonN.M/site-packages放入您的sys.path如果它存在),因此您只需創建目錄並放置特定於版本的包那里。

或者在~/.bashrc~/.bash_aliases設置別名,例如(假設python2是你現有的python 2命令):

alias py2='PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages python2'

,這條路可以從import site; site.getsitepackages()獲得import site; site.getsitepackages() import site; site.getsitepackages()

在將來,只需發出命令py2而不是python2來執行版本2包的任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM