69

我是 virtualenv 的新手,但我正在编写 django 应用程序,最后我必须以某种方式部署它。

因此,假设我的应用程序在我安装了所有必需库的本地 virtualenv 上运行。我现在想做的是运行某种脚本,它将使用我的 virtualenv,检查里面安装了什么并生成一个脚本,将所有这些库安装在其他机器上的新 virtualenv 上。如何做到这一点?请帮忙。

4

3 回答 3

133

你不要复制粘贴你的 virtualenv。您导出所有已安装软件包的列表,例如 -

pip freeze > requirements.txt

然后将requirements.txt文件推送到您想要部署代码的任何地方,然后执行您在开发机器上所做的操作 -

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

在那里,您已经安装了具有确切版本的所有软件包。

您还可以查看Fabric以自动执行此任务,其功能如下 -

def pip_install():
    with cd(env.path):
        with prefix('source venv/bin/activate'):
            run('pip install -r requirements.txt')
于 2013-02-04T10:43:09.593 回答
4

您可以安装 virtualenvwrapper 并尝试cpvirtualenv,但开发人员在这里建议谨慎:

警告

不很好地支持复制虚拟环境。每个 virtualenv 都有硬编码到其中的路径信息,并且可能存在复制代码不知道它需要更新特定文件的情况。谨慎使用。

于 2017-10-20T21:26:25.733 回答
-1

如果它将在同一路径上,您可以将其 tar 并在另一台机器上解压。如果目标机器上所有相同的依赖项、库等都可用,它将起作用。

于 2016-04-19T11:06:11.850 回答