如何为版本2和版本3设置不同的PYTHONPATH?
问题描述:
让我们假设我在.bashrc
设置如下PYTHONPATH:如何为版本2和版本3设置不同的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?
答
对于Linux的,您可以创建一个符号链接到您库文件夹,并把它放在你的目标版本:
ln -s /your/path /usr/local/lib/python3.6/site-packages
这不是要改变PYTHONPATH
但替代解决方案。
答
您的选择取决于操作系统。
Ubuntu的,如果你正在使用标准的Python包...
如果您希望这样做全系统的(你有管理权限),你可以到sys.path
通过/usr/lib/pythonN.M/site.py
添加其他路径。
为你自己而已,系统默认site.py
文件已经把$HOME/.local/lib/pythonN.M/site-packages
到您的sys.path
(当且仅当它存在),所以你可以创建目录,并把特定版本的软件包存在。
答
您可以使用路径配置(.pth
)文件为Python 2和Python 3设置不同的sys.path
。
例如,将目录添加到sys.path
为Python 2,创建一个.pth
文件中的任何Python 2里的site-packages目录(即由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
模块文档。
最好的解决方案可能是使用['virtenvs'链接](http://docs.python-guide.org/en/latest/dev/virtualenvs/) – RedX
在'/ usr中创建'filename.pth'/lib/python27/dist-packages /'并添加一行,即'ver2packages'的路径。 – Zety