5

我有一个相对较大的项目,它有很多依赖项,我想分发这个项目,但是安装这些依赖项有点痛苦,并且需要很长时间(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不行。

4

3 回答 3

2

导出虚拟环境

从虚拟环境中:

pip freeze > requirements.txt

例如,这里是 myproject 虚拟环境:
在此处输入图像描述

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

sudo pip install -r requirements.txt

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

于 2020-06-30T18:57:45.213 回答
0

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

可能更好的解决方案是使用 pip 下载缓存。这至少会加快 pip install 的下载部分。看看这个线程:如何使用 pip 从本地缓存安装?

于 2013-04-28T12:40:44.547 回答
0

干净的方式似乎与virtualenv --relocatable.

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

于 2015-04-27T14:03:09.820 回答