我想只为python2添加一个特定的库路径.然而,在添加export PYTHONPATH="/path/to/lib/"
到my .bashrc
之后,执行python3会收到错误:您的PYTHONPATH指向Python 2.x的site-packages目录但您运行的是Python 3.x!
我认为这是由于python2和python3共享公共PYTHONPATH
变量.
那么,我可以PYTHONPATH
分别为python2和python3 设置不同的变量.如果没有,我如何将库路径专门添加到特定版本的python?
您可以mymodule.pth
在lib/site-packages
(在Windows上)或lib/pythonX.Y/site-packages
(在Unix和Macintosh上)创建配置文件,然后添加一行包含要添加到python路径的目录.
来自docs.python2和docs.python3:
路径配置文件是一个文件,其名称具有该形式
name.pth
,并存在于上述四个目录之一中; 其内容是要添加的附加项目(每行一个)sys.path
.永远不会添加不存在的项目sys.path
,也不会检查项目是指目录而不是文件.没有项目被添加到sys.path
多次.以#开头的空白行和行将被跳过.以import
(后跟空格或制表符)开头的行将被执行.
PYTHONPATH
就包管理而言,这有点像黑客.一个"漂亮"的解决方案是打包你的库并安装它.
这可能听起来比现在更棘手,所以让我告诉你它是如何工作的.
让我们假设你的"包"有一个名为的文件wow.py
,你保留它/home/user/mylib/wow.py
.
/home/user/mylib/setup.py
使用以下内容创建文件:
from setuptools import setup setup(name="WowPackage", packages=["."], )
就是这样,现在您可以将您的软件包"正确安装"到您选择的Python发行版中,而无需担心PYTHONPATH
.就"正确安装"而言,您至少有三个选择:
"真的很合适".将您的代码复制到python site-packages目录:
$ python setup.py install
"发展".只会添加python site-packages的链接/home/user/mylib
.这意味着对目录中代码的更改将起作用.
$ python setup.py develop
"用户".如果您不想写入系统目录,可以将程序包("正确"或"处于开发模式")安装到/home/user/.local
目录,Python也可以在目录中找到它们.为此,只需添加--user
到命令.
$ python setup.py install --user $ python setup.py develop --user
要删除在开发模式下安装的软件包,请执行
$ python setup.py develop -u
要么
$ python setup.py develop -u --user
要删除"正确"安装的软件包,请执行
$ pip uninstall WowPackage
如果你的包比单个文件更有趣(例如你有子目录等),只需packages
在setup
函数的参数中列出那些(你需要递归地列出所有内容,因此你将为更大的库使用辅助函数).一旦掌握了它,请务必阅读更详细的手册.
最后,去把你的包贡献给PyPI - 它就像调用一样简单python setup.py sdist register upload
(尽管你需要一个PyPI用户名).