将完整的virtualenv复制到另一台电脑

vic*_*cco 13 python copy pip virtualenv

我有一个virtualenv位于/home/user/virtualenvs/Environment.现在我需要在另一台PC上使用这个环境.所以我安装virtualenv-clone并用它来克隆/Environment.然后我通过USB将其复制到另一台PC.我可以激活它source activate,但当我尝试启动python解释器时,sudo ./Environment/bin/python我得到

./bin/python: 1: ./bin/python: Syntax Error: "(" unexpected
Run Code Online (Sandbox Code Playgroud)

没有sudo执行它会给我一个错误,告诉我二进制格式有错误.但这怎么可能呢?我刚刚复制了它.或者有更好的方法吗?我不能只使用,pip freeze因为/Environment/lib/python2.7/site-packages/我自己编写了一些软件包,我也需要复制它们.据我所知,它pip freeze只是创建了一个包列表,然后下载和安装.

Anu*_*pta 17

在源计算机上执行以下步骤

  1. workon [environment_name]
  2. pip freeze> requirements.txt
  3. 将requirements.txt复制到其他PC

在其他PC上

  1. 使用mkvirtualenv [environment_name]创建虚拟环境
  2. workon [environment_name]
  3. pip install -r requirements.txt

你应该完成!

类似的问题如何将虚拟环境从服务器复制/克隆到本地计算机


小智 16

Pip Freeze 不适合您?

场景:您当前的系统上安装了一些库,这些库很难迁移使用pip freeze,而且真的很难,因为您必须手动下载并安装轮子,例如 gdal,fiona,rasterio,然后即使这样做仍然会导致项目崩溃是因为它们可能以错误的顺序安装或依赖项错误等等。

这是我参与一个项目时的经历。

对于这种情况,当您最终获得正确的环境时,您基本上不想在将项目移动到新机器时再次经历同样的地狱。我这样做了很多次。直到最后我找到了解决办法。

现在,在继续之前先声明一下:

我并不主张这种方法是最好的,但它对于我当时的情况来说是最好的。

我也不能保证它在不同操作系统之间切换时能够工作,因为我只在 Windows 机器之间尝试过。事实上,当您从 Windows 迁移到其他操作系统时,我不希望它起作用,因为基于 Unix 的操作系统的 virtualenv 文件夹的结构与 Windows 不同。

最后,完成这一切的最佳方法是使用 Docker。我的计划是最终这样做。我之前从未在非 Web 应用程序项目中使用过 Docker,当我的计算机出现故障且项目不能延迟时,我需要快速修复。一旦我将 Docker 应用到项目中,我就会更新这个线程。

黑客攻击

这就是我所做的:

  • 在新机器上安装相同的基础 Python。如果旧的有 3.9,请在新的上安装 3.9,依此类推。记下可执行文件的位置,通常类似于 C:\Users\User\Appdata\Local\Programs\Python\PythonXX

  • 压缩您的虚拟环境文件夹,将其复制到新机器内的项目目录中。提取那里的所有文件

  • 使用您选择的文本编辑器(或者最好是 IDE),使用“在所有文件中搜索”功能来查找对旧计算机路径的所有引用
    :C:\Users*您的旧用户名*

  • 将这些替换为您的新参考。对于我的情况,我必须在虚拟环境文件夹内的以下文件中执行此操作:pyvenv.cfg、Scripts/activate、Scripts/activate.bat、Scripts/activate.fish 和 Scripts/activate.nu。

就是这样!

大家好运。