所以我使用virtualenv
为我正在处理的许多项目定义环境。我将virtualenv
python定义为版本3.4。最终,我的全局python从3.4.0升级到3.4.3。这被证明是一个问题,因为virtualenv
依赖于全局二进制文件(/lib/python3.4
中virtualenv
的内容实际上只是全局二进制文件的链接),而这些不是定义了他们的次要版本。换句话说,升级完成后,二进制文件夹/usr/lib/python3.4
的内容被替换。这是因为python不会在3.4.0和3.4.3中单独安装,而只能在名为/usr/lib/python3.4
的单个文件夹中安装。由于我的virtualenv
中的python可执行文件是3.4.0,因此3.4.3二进制文件显然存在兼容性问题(它将无法加载ctypes
,这会阻止几乎任何python依赖运行)。我发现的唯一解决方法是降级我的全局python安装,但这感觉“脏”。如果我有一个项目运行3.4.0而另一个项目运行3.4.3怎么办?是否有办法让它们在同一台机器上并行工作,因为任何3.4.x安装只能存在一个二进制文件夹?
我试图理解我是否遗漏了一些明显的东西,或者这是virtualenv
的常见问题,因为我听到很多人在使用{{}时抱怨binares的问题1}}。
将来,有没有告诉virtualenv
复制二进制文件而不是链接到它们?
答案 0 :(得分:3)
Virtualenvs并不是可移植的,无论是跨机器还是跨Python版本。
这意味着升级Python版本有时会破坏virtualenvs。您需要重新创建它们并重新安装其中的所有内容(在virtualenv根目录中运行):
{{1}}