如何迁移virtualenv

时间:2013-04-25 19:44:06

标签: virtualenv migrating

我有一个相对较大的项目,有很多依赖项,我想分发这个项目,但安装这些依赖项有点痛苦,需要很长时间(pip安装需要相当长的时间)。所以我想知道是否有可能将整个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

这里有点困惑。

EDIT2:我也试过virtualenv --relocatable backend但是没有去:(这让我非常难过。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

导出虚拟环境

在虚拟环境中

<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js"></script>

<canvas id="chart" />

例如,这里是针对myproject虚拟环境的:
enter image description here

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

pip freeze > requirements.txt

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