PYTHONPATH 就包管理而言有点像 hack。一个“漂亮”的解决方案是打包你的库并安装它。
这听起来可能比实际更棘手,所以让我告诉你它是如何工作的。
假设您的“包”有一个名为 wow.py 的文件,并且您将其保存在 /home/user/mylib/wow.py 中。
使用以下内容创建文件/home/user/mylib/setup.py:
from setuptools import setup
setup(name="WowPackage",
packages=["."],
)
就是这样,现在您可以将您的包“正确安装”到您选择的 Python 发行版中,而无需担心PYTHONPATH。就“正确安装”而言,您至少有三个选择:
-
“非常正确”。将您的代码复制到您的 python 站点包目录:
$ python setup.py install
-
“发展”。只会将 python 站点包中的链接添加到/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
如果您的包比单个文件更有趣(例如,您有子目录等),只需在 setup 函数的 packages 参数中列出它们(您需要递归地列出所有内容,因此您将对较大的库使用辅助函数)。一旦掌握了窍门,请务必阅读a more detailed manual。
最后,将你的包贡献给 PyPI —— 就像调用 python setup.py sdist register upload 一样简单(不过你需要一个 PyPI 用户名)。