如何导出 viralenv?

我刚开始接触 viralenv,但我正在编写 django 应用程序,最后我将不得不以某种方式部署它。

因此,让我们假设我的应用程序可以在我安装所有必需库的本地 viralenv 上工作。我现在要做的,是运行某种脚本,它会带走我的 viralenv,检查里面安装了什么,然后生成一个脚本,它会把所有这些库安装到另一台机器上的 viralenv 上。怎样才能做到这一点?请帮帮我。

75850 次浏览

You don't copy paste your virtualenv. You export the list of all the packages installed like -

pip freeze > requirements.txt

Then push the requirements.txt file to anywhere you want to deploy the code, and then just do what you did on dev machine -

$ virtualenv <env_name>
$ source <env_name>/bin/activate
(<env_name>)$ pip install -r path/to/requirements.txt

And there you have all your packages installed with the exact version.

You can also look into Fabric to automate this task, with a function like this -

def pip_install():
with cd(env.path):
with prefix('source venv/bin/activate'):
run('pip install -r requirements.txt')

If it is going to be on the same path you can tar it and extract it on another machine. If all the same dependencies, libraries etc are available on the target machine it will work.

You can install virtualenvwrapper and try cpvirtualenv, but the developers advise caution here:

Warning

Copying virtual environments is not well supported. Each virtualenv has path information hard-coded into it, and there may be cases where the copy code does not know it needs to update a particular file. Use with caution.