我使用 virtualenv 是错误的还是这是它的限制?
Am I using virtualenv wrong or is this a limitation of it?
所以我使用 virtualenv
为我正在进行的许多项目定义环境。我将 virtualenv
python 定义为 3.4 版。最终,我的全局 python 从 3.4.0 升级到了 3.4.3。这被证明是一个问题,因为 virtualenv
依赖于全局二进制文件(我的 virtualenv
中 /lib/python3.4
的内容实际上只是 links 到全局二进制文件),并且这些未定义到它们的次要版本。换句话说,升级完成后,二进制文件夹 /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 安装,但这感觉 "dirty"。如果我有一个项目 运行ning 3.4.0 和另一个 运行ning 3.4.3 怎么办?鉴于任何 3.4.x 安装只能存在一个二进制文件夹,有没有办法让它们在同一台机器上并行工作?
我想知道我是否遗漏了一些明显的东西,或者这是 virtualenv
的一个常见问题,因为我听说很多人在使用时抱怨二进制文件的问题virtualenv
.
将来,有没有告诉 virtualenvwrapper
将二进制文件而不是 link 复制给它们的方法?
Virtualenvs 并未设计为可移植的,无论是跨机器还是跨 Python 个版本。
这意味着升级 Python 版本有时会破坏 virtualenvs。您需要重新创建它们并重新安装其中的所有内容(运行 在您的 virtualenv root 中):
# Save a list of what you had installed
pip freeze > freeze.txt
# Trash the entire virtualenv
deactivate
rm -rf lib/ bin/ share/ man/ include/ .Python pip-selfcheck.json
# Create it anew
virtualenv .
# Install all libraries you had before
pip install -r freeze.txt
所以我使用 virtualenv
为我正在进行的许多项目定义环境。我将 virtualenv
python 定义为 3.4 版。最终,我的全局 python 从 3.4.0 升级到了 3.4.3。这被证明是一个问题,因为 virtualenv
依赖于全局二进制文件(我的 virtualenv
中 /lib/python3.4
的内容实际上只是 links 到全局二进制文件),并且这些未定义到它们的次要版本。换句话说,升级完成后,二进制文件夹 /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 安装,但这感觉 "dirty"。如果我有一个项目 运行ning 3.4.0 和另一个 运行ning 3.4.3 怎么办?鉴于任何 3.4.x 安装只能存在一个二进制文件夹,有没有办法让它们在同一台机器上并行工作?
我想知道我是否遗漏了一些明显的东西,或者这是 virtualenv
的一个常见问题,因为我听说很多人在使用时抱怨二进制文件的问题virtualenv
.
将来,有没有告诉 virtualenvwrapper
将二进制文件而不是 link 复制给它们的方法?
Virtualenvs 并未设计为可移植的,无论是跨机器还是跨 Python 个版本。
这意味着升级 Python 版本有时会破坏 virtualenvs。您需要重新创建它们并重新安装其中的所有内容(运行 在您的 virtualenv root 中):
# Save a list of what you had installed
pip freeze > freeze.txt
# Trash the entire virtualenv
deactivate
rm -rf lib/ bin/ share/ man/ include/ .Python pip-selfcheck.json
# Create it anew
virtualenv .
# Install all libraries you had before
pip install -r freeze.txt