【发布时间】:2016-02-10 14:46:33
【问题描述】:
我有一个正在一台服务器上开发并在另一台服务器上运行的应用程序。我的问题是关于将此应用程序转移到其目标服务器。
该应用程序主要由一个带有子包的大包组成。还有一个小的启动脚本、一个示例配置文件和一个 systemd .service 文件。我添加了setup.py 和MANIFEST.in 文件来创建标准的可安装包。
这是我目前的工作流程:
-
在开发服务器上:
- 做一些工作
-
git push到本地仓库
-
在生产服务器上:
- 激活虚拟环境
pip install --upgrade git+http://...
它完成了这项工作,但最近我读到了这个:Where in a virtualenv does *my* code go?。恐怕我做错了。
总的来说,我确实同意这个答案(缩短):
virtualenv提供了一个 Python 解释器实例,而不是一个应用程序实例。 …… 例如,您可能有一个项目,其中有多个 使用相同 virtualenv 的应用程序。
现在,我希望能够在应用程序之间共享相同的虚拟环境。我想改变我的工作流程,但我不知道怎么做。
我什至不确定应该保留在虚拟环境之外的应用程序文件是什么?我的整个应用程序还是除了 python 包之外的所有内容,即脚本和配置文件?
或者我应该只将虚拟环境用于需求包,跳过pip 并仅使用git checkout 安装我的应用程序?
【问题讨论】:
-
你为什么不
pip freeze > requirements.txt,然后在你的应用程序的其他实例中:pip install -r requirements.txt?这可确保您每次设置应用程序时都拥有相同的版本。 (我可能错过了你的观点,但在第二次阅读时,我觉得这是要走的路) -
@viod 我的问题(以及我的困惑)是应用程序应该安装在虚拟环境之外,但 pip 将其安装在虚拟环境中。
标签: python virtualenv