我只想给python2添加一个特定的库路径。但是,在将export PYTHONPATH="/path/to/lib/"
添加到my.bashrc
之后,执行python3会得到一个错误:PYTHONPATH指向Python 2.x的site packages dir,但您正在运行python3.x!
我认为这是因为python2和python3共享公共的PYTHONPATH
变量。
所以,我可以分别为python2和python3设置不同的PYTHONPATH
变量吗。如果不是,我如何才能将库路径专门添加到特定版本的python?
Tags:
您可以在
lib/site-packages
(在Windows上)或lib/pythonX.Y/site-packages
(在Unix和Macintosh上)下创建配置文件mymodule.pth
,然后添加一行包含要添加到python路径的目录。来自docs.python2和docs.python3:
我发现没有办法修改仅用于} file 。
python2
或仅用于python3
的PYTHONPATH
。我不得不使用^{我要做的是:
$HOME/.local/lib/python${MAJOR_VERSION}.${MINOR_VERSION}/site-packages
.pth
文件.pth
文件是否正常更多关于`.pth的信息。文件语法及其工作方式请参见:python2 docs和python3 docs。
(简而言之,
.pth
文件:当您的python解释器启动时,它将在某些目录中查看.pth
文件,打开这些文件,解析这些文件,并将这些目录添加到您的sys.path
(即,与PYTHONPATH
相同的行为)中,并使位于这些目录中的任何python模块都可以正常导入。)就包管理而言,
PYTHONPATH
有点像黑客。一个“漂亮”的解决方案是将库打包并安装。这听起来可能比实际情况更棘手,所以让我来告诉你它是如何工作的。
假设您的“包”有一个名为
wow.py
的文件,并且您将其保存在/home/user/mylib/wow.py
中。创建包含以下内容的文件
/home/user/mylib/setup.py
:就这样,现在您可以“正确地”将您的包安装到您选择的Python发行版中,而无需担心
PYTHONPATH
。就“正确安装”而言,您至少有三个选项:“非常合适”。将代码复制到python站点包目录:
“发展”。将只添加从python站点包到
/home/user/mylib
的链接。这意味着对目录中代码的更改将生效。“用户”。如果不想写入系统目录,则可以将包(无论是“正确”还是“处于开发模式”)安装到
/home/user/.local
目录,Python也可以在该目录中自己找到它们。为此,只需在命令中添加--user
。要删除以开发模式安装的包,请执行
或者
要删除“正确”安装的软件包,请执行以下操作
如果您的包比单个文件更有趣(例如,您有子目录等等),只需在
setup
函数的packages
参数中列出那些(您将需要递归地列出所有内容,因此您将为更大的库使用helper函数)。一旦你掌握了它,一定要阅读a more detailed manual以及。最后,将您的包贡献给PyPI——这和调用
python setup.py sdist register upload
一样简单(不过,您需要一个PyPI用户名)。相关问题 更多 >
编程相关推荐