【问题标题】:How to export virtualenv?如何导出虚拟环境?
【发布时间】:2013-01-19 01:09:05
【问题描述】:

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

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

【问题讨论】:

    标签: python django virtualenv


    【解决方案1】:

    您不会复制粘贴您的 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')
    

    【讨论】:

    • 很公平,但遗憾的是没有专门的命令和结构集成;)
    • 我刚刚在答案中添加了织物。你可以很容易地编写一个结构函数来做同样的事情。几乎没有几行代码。
    • 添加了一个示例函数来帮助您入门。
    • 如果您将虚拟环境用于比跟踪软件包版本更复杂的事情,这完全不够。例如,如果您对虚拟虚拟环境有不同的 python 路径,或者正在配置环境的其他方面。这种方法甚至忽略了使用 python 版本这样简单的东西!
    • 但是,当我对此进行更多研究时,似乎 virtualenv 确实不具备支持包含这种更复杂的环境管理的能力,即使它们支持这样的定制......所以也许我只是使用错误的工具。
    【解决方案2】:

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

    警告

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2021-03-02
        • 2019-09-24
        • 1970-01-01
        • 2020-11-20
        • 2023-01-14
        • 1970-01-01
        • 1970-01-01
        • 2021-06-15
        • 2021-11-30
        相关资源
        最近更新 更多