virtualenv的跨平台界面

时间:2012-08-20 07:38:31

标签: python django virtualenv cloud-hosting paas

我在Windows上开发了我的整个项目(Django,Python),并且那里的所有PaaS都使用Linux。

VirtualEnv on Linux:

VirtualEnv_dir /
                 bin/ activate, activate_this.py
                 include /
                 lib /
                 local /

VirtualEnv of Windows:

VitualEnv_dir /
                Include/
                Lib /
                Scripts/ activate.bat, activate_this.py

因为virtualenv在windows& Linux操作系统。我如何在PaaS上使用我的windows virtualenv?

修改

如果我在Windows上,我需要运行call virtualenv_dir/scripts/activate.bat才能进入它。在Linux中,它的东西是source virtualenv_dir/bin/activate

现在,我的repo拥有使用Windows生成的virtualenv(使用.bat)。当我将repo推送到Linux系统时,我应该如何运行它? (bat文件不起作用!)

我正在使用OpenShift PaaS,我想在Git repo上添加一个virtualenv。我该如何激活它?

什么是最好的解决方案

1 个答案:

答案 0 :(得分:27)

除非您使用某些Windows特定的库;或者替代Python实现(如IronPython),没有什么可担心的。

许多人(包括我自己)使用Windows进行开发并在Linux上进行部署以进行生产,并为此目的使用virtualenv。它旨在使您的环境可移植。

你没有将整个virtualenv推向Linux。

准备好虚拟环境并且代码正常工作后,您应该冻结应用程序的要求:

pip freeze > requirements.txt

在目标操作系统中;创建一个虚拟环境:

virtualenv --no-site-packages prod_env

virtualenv的最新版本中,--no-site-packages是默认版本。

接下来,使用开发中的需求文件填充环境:

source prod_env/bin/activate
pip install -r requirements.txt

当您更改需求时,只需重新生成requirements.txt文件并在生产中运行pip install -r requirements.txt

在某些情况下,您的生产系统无法访问Internet以下载软件包,因此pip install技巧不起作用。对于这些情况,您可以创建自己的private pypi server并将包推送到那里。通过此路由添加的奖励是您可以创建并推送私有包并使用常规setuptools实用程序安装它们。

确定哪个进程适合您之后 - 然后在部署脚本中自动执行该过程;通常与您的源代码管理系统挂钩。有些人更喜欢单独的发布工程流程(使用发布经理 - 这是一个人,而不是一个程序)。