2016-01-06 134 views
3

让我们假设我在.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?

+1

最好的解决方案可能是使用['virtenvs'链接](http://docs.python-guide.org/en/latest/dev/virtualenvs/) – RedX

+0

在'/ usr中创建'filename.pth'/lib/python27/dist-packages /'并添加一行,即'ver2packages'的路径。 – Zety

回答

3

对于Linux的,您可以创建一个符号链接到您库文件夹,并把它放在你的目标版本:

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

这不是要改变PYTHONPATH但替代解决方案。

0

您的选择取决于操作系统。

Ubuntu的,如果你正在使用标准的Python包...

如果您希望这样做全系统的(你有管理权限),你可以到sys.path通过/usr/lib/pythonN.M/site.py添加其他路径。

为你自​​己而已,系统默认site.py文件已经把$HOME/.local/lib/pythonN.M/site-packages到您的sys.path当且仅当它存在),所以你可以创建目录,并把特定版本的软件包存在。

2

您可以使用路径配置(.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模块文档。

相关问题