如何在企业网络中部署python应用程序

时间:2013-07-22 12:49:03

标签: python deployment python-3.x setuptools

首先让我解释一下目前的情况:

我们确实有几个python个应用程序依赖于自定义(非公开发布的)以及一般已知的包。这些依赖项都安装在system python安装上。应用程序的分发是通过git来源完成的。所有这些计算机都隐藏在公司网络中,无法访问互联网。

这种方法在屁股上有点痛苦,因为它有以下缺点:

  • 必须在每台计算机上手动安装Libs :(

如何更好地部署应用程序?我最近看到virtualenv似乎是解决方案,但我还没有看到它。

virtualenv为我的应用创建一个干净的python instance。我应该如何部署它以便软件的使用者可以轻松启动它?

应用程序中是否有启动脚本在启动期间创建virtualenv

下一个问题是计算机无法访问互联网。我知道我可以为包指定一个自定义位置(网络共享?),但这是正确的方法吗?或者我也应该部署压缩包吗?

另一种方法是运送整个python实例吗?那么用户不必启动virutalenv?在这个python实例中,所有必需的包都将被预先安装。

由于我们的应用程序发展迅速,我们的发布周期很快(2周)。通过git部署非常简单。用户可以通过更新脚本从stable分支获取最后一个版本 - 这仍然是可能的还是有更好的方法?

我知道有很多问题。希望有人能回答我,给我一些建议。

1 个答案:

答案 0 :(得分:2)

您可以使用pip直接从git安装:

pip install -e git+http://192.168.1.1/git/packagename#egg=packagename

无论您是否使用virtualenv(您应该使用),这都适用。

您还可以创建一个requirements.txt文件,其中包含您要安装的所有内容:

-e git+http://192.168.1.1/git/packagename#egg=packagename
-e git+http://192.168.1.1/git/packagename2#egg=packagename2

然后你就这样做了:

pip install -r requirements.txt

因此,部署过程包括获取requirements.txt文件,然后执行上述命令。添加virtualenv会使其更清晰,更容易;如果没有virtualenv,您将污染系统范围的Python安装。 virtualenv旨在为在其独立的虚拟Python环境中运行许多应用程序提供解决方案;它与如何在该环境中实际安装东西没有太大关系。