【问题标题】:How to migrate virtualenv如何迁移 virtualenv
【发布时间】:2021-05-22 17:26:50
【问题描述】:

我有一个比较大的项目,它有很多依赖项,我想分发这个项目,但是安装这些依赖项有点痛苦,而且需要很长时间(pip install 需要相当长的时间)。所以我想知道是否可以将整个 virtualenv 迁移到另一台机器并让它运行。

我尝试复制整个 virtualenv,但每当我尝试运行某些东西时,这个 virtualenv 仍然使用我旧机器的路径。例如当我跑步时

source activate
pserve development.ini 

我明白了

bash: ../bin/pserve: /home/sshum/backend/bin/python: bad interpreter: No such file or directory

这是我的旧目录。那么有没有办法让 virtualenv 用新路径重新配置这个路径?

我在 bin 目录中尝试了sed -i 's/sshum/dev1/g' *,它解决了这个问题。但是,我现在遇到了一个不同的问题,我猜这个 sed 改变了一些东西。

我已经确认我已经安装了libssl-dev,但是当我运行python 时,我得到:

E: Unable to locate package libssl.so.1.0.0
E: Couldn't find any package by regex 'libssl.so.1.0.0'

但是当我运行aptitude search libssl 时,我看到了:

i A libssl-dev        - SSL development libraries, header files and documentation

我也试过virtualenv --relocatable backend,但不行。

【问题讨论】:

标签: virtualenv


【解决方案1】:

导出虚拟环境

来自虚拟环境:

pip freeze > requirements.txt

例如,这里是 myproject 虚拟环境:

在新机器和环境中,将 requirements.txt 复制到 新机器中的新项目文件夹中并运行终端命令:

sudo pip install -r requirements.txt

那么您应该拥有旧虚拟环境中以前可用的所有软件包。

【讨论】:

    【解决方案2】:

    当您创建一个新的 virtualenv 时,它会针对运行它的计算机进行配置。我什至认为它是为创建它的特定目录配置的。所以我认为在移动代码时应该始终创建一个新的 virtualenv。可行的方法是将 lib/Pythonx.x/site-packages 复制到您的 virtualenv 目录中,但我认为这不是一个特别好的解决方案。

    使用 pip 下载缓存可能是更好的解决方案。这至少会加快 pip install 的下载部分。看看这个线程:How do I install from a local cache with pip?

    【讨论】:

    • 是的,我就是这么做的。谢谢
    【解决方案3】:

    干净的方式似乎是virtualenv --relocatable

    或者,您可以通过编辑bin/activate 中的VIRTUAL_ENV 路径来手动执行此操作以反映更改。如果您选择这样做,您还必须编辑 bin/pserve 的第一行 (#),它指示解释器路径。

    【讨论】:

      猜你喜欢
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 2011-11-04
      相关资源
      最近更新 更多