首先让我解释一下目前的情况:
我们确实有几个python
个应用程序依赖于自定义(非公开发布的)以及一般已知的包。这些依赖项都安装在system python
安装上。应用程序的分发是通过git
来源完成的。所有这些计算机都隐藏在公司网络中,无法访问互联网。
这种方法在屁股上有点痛苦,因为它有以下缺点:
如何更好地部署应用程序?我最近看到virtualenv
似乎是解决方案,但我还没有看到它。
virtualenv
为我的应用创建一个干净的python instance
。我应该如何部署它以便软件的使用者可以轻松启动它?
应用程序中是否有启动脚本在启动期间创建virtualenv
?
下一个问题是计算机无法访问互联网。我知道我可以为包指定一个自定义位置(网络共享?),但这是正确的方法吗?或者我也应该部署压缩包吗?
另一种方法是运送整个python实例吗?那么用户不必启动virutalenv
?在这个python实例中,所有必需的包都将被预先安装。
由于我们的应用程序发展迅速,我们的发布周期很快(2周)。通过git
部署非常简单。用户可以通过更新脚本从stable
分支获取最后一个版本 - 这仍然是可能的还是有更好的方法?
我知道有很多问题。希望有人能回答我,给我一些建议。
答案 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环境中运行许多应用程序提供解决方案;它与如何在该环境中实际安装东西没有太大关系。