分发 Python 个应用程序 "with" 个 venv

Distribute Python applications "with" a venv

假设我有一个 Python 应用程序将用作命令行工具。此应用程序具有一些外部依赖项。我将如何分发这个?

我知道在虚拟环境(virtualenv 或 pyvenv)中安装 Python 东西很常见,但如果要从命令行使用该应用程序,我不想让我或我的用户每次他们想使用我的应用程序时激活正确的虚拟环境。

有解决办法吗?或者我应该把所有依赖项都放在 setup.py 中,然后由用户决定是否创建虚拟环境?

我将提及 piprequirements.txt 文件的替代解决方案。请参阅文档:

https://pip.pypa.io/en/latest/user_guide.html#requirements-files

然后用户就会知道您的应用有哪些依赖项,并且可以使用 pip install -r requirements.txt 轻松地将它们安装到 his/her 虚拟环境中。

可以使用 pip freeze > requirements.txt 轻松创建文件。

这有点取决于您认为谁会使用您的应用程序。如果你通过 pip 分发它,你的用户应该能够决定是否使用 virtualenv。如果您希望您的用户简单地从网站下载您的脚本(甚至可能是 windows)并且它 "simply works" 您可以捆绑您的依赖项(甚至可能是 python 解释器)然后修改PYTHONPATH accordingly. Of course you could also use different ways to distribute e.g. a docker image.

使用 setup.py 并在 install_requires 中列出依赖项。

现在进入"How to distribute this?"

部分

我们公司 运行 我们自己的 pypi 服务器。安装在我们服务器上的每个包都必须来自我们的 pypi 服务器。没有软件直接从互联网下载到服务器。

如果你想构建一个开源工具,你应该将它上传到官方pypi服务器。

该工具不应该关心它的环境。它应该在 virtualenv 和外部工作。

也许示例项目可以帮助您:https://github.com/pypa/sampleproject