繁体   English   中英

用“venv”分发Python应用程序

[英]Distribute Python applications “with” a venv

假设我有一个Python应用程序将用作命令行工具。 这个应用程序有一些外部依赖项。 我该怎么做呢?

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

这个问题有方法解决吗? 或者我应该将所有依赖项放在setup.py中,并将其留给用户,无论他们是否创建虚拟环境?

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

现在到“如何分发这个?”部分

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

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

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

也许sampleproject会帮助你: https//github.com/pypa/sampleproject

我将提到一个替代解决方案,其中包含piprequirements.txt文件。 查看文档:

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

然后,用户知道您的应用程序具有哪些依赖关系,并可以使用pip install -r requirements.txt轻松地将它们安装到他/她的虚拟环境中。

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

这有点取决于您认为将使用您的应用程序的人。 如果你通过pip分发它,你的用户应该能够决定是否使用virtualenv。 如果您希望您的用户只是从网站上下载您的脚本(甚至可能用于Windows)并且“只是工作”,您可以捆绑您的依赖项(甚至可能是python解释器),然后相应地修改PYTHONPATH 当然,您也可以使用不同的方式来分发例如泊坞窗图像

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM