用“venv”分发Python应用程序

时间:2015-06-05 09:48:53

标签: python virtualenv software-distribution

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

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

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

3 个答案:

答案 0 :(得分:2)

使用install_requires并列出<div class=\"container\">\r\n\t<div class=\"clearfix row \">\r\n\t\t<div class=\"col-md-12 column\">\r\n\t\t\t<h3>\r\n\t\t\t\tNew form created\r\n\t\t\t<\/h3 >\r\n\t\t\t<div class=\"form-group\">\r\n\t\t\t\t <label><strong>Enter name<\/strong><\/label><input name=\"1430985388220267#enter_name\" id=\"1430985388220267\" class=\"form-control\" grid-name=\"Enter name\" type=\"text\" \/>\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div> 中的依赖项。

现在转到部分&#34;如何分发这个?&#34;

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

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

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

也许sampleproject可以帮助您:https://github.com/pypa/sampleproject

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:0)

这取决于您认为将使用您的应用程序的人。如果你通过pip分发它,你的用户应该能够决定是否使用virtualenv。如果您希望您的用户只是从网站上下载您的脚本(甚至可能是针对Windows),那么它只需要工作即可。您可以捆绑您的依赖项(甚至可能是python解释器),然后相应地修改PYTHONPATH。当然,您也可以使用不同的方式来分发,例如一个docker image