原始答案

原始答案

问题:

bin我使用 生成的虚拟环境的目录(在后台virtualenvwrapper使用virtualenv)位于子文件夹中local,这导致全面损坏(目前大部分情况下如此)。基本上,这些工具需要 中的解释器,virtualenvwrapper而不是 中的解释器。vscode<envname>/bin<envname>/local/bin

信息:

我已经做了一些研究并发现以下内容:

  • Ubuntu 22.04 中有一个变化,现在使用posix_local模块sysconfig而不是posix_prefix默认方案,这已解释这里
  • Virtualenv 在某些时候引入了针对 Python 2 的补丁,该补丁将bin位置更改为local/bin虚拟环境内部以响应前缀posix_local,这是在这个问题并导致此补丁本来应该修复这个错误

系统:

  • Ubuntu 22.04 LTS x86_64
  • python3-3.10.4-0ubuntu2
  • python3-virtualenv-20.13.0+ds-2
  • 虚拟环境包装器==4.8.4

问题:

  • 我如何重新virtualenv安装我的环境<envname>/bin,忽略posix_local选项?
  • 修复此问题的原因是否仍然适用于 Python 3?(我必须承认,我一开始并不真正理解为什么需要这个补丁。)

答案1

原始答案

用户英曼舞门在 GitHub 上虚拟环境在中发布了解决方案这个问题

基本上,他们通过在他们选择的 shell 中导出以下变量来改变 sysconfig 方案:

export DEB_PYTHON_INSTALL_LAYOUT='deb'

这会将默认安装方案从posix_local(会产生问题的行为)更改为 (deb_system再次具有正常/预期的虚拟环境布局)。可以使用以下代码片段检查当前安装方案:

import sysconfig
print(sysconfig.get_default_scheme())

需要注意的是,这只是一个临时解决方案。真正的解决方案可能包括改变这种行为本身virtualenvyingmanwumen 的问题我自己的问题解决方案中的问题posix_local。的开发人员virtualenv愿意接受 PR 来解决潜在问题。如果提出并接受了可以解决问题的 PR,我将更新此答案。


更新

A公共关系已接受专门为 解决此问题virtualenv,这意味着 的所有版本virtualenv > 20.16.5都不再存在此问题。

此外,该漏洞似乎特别发生在以下情况:

[...]python3-distutils 没有安装(或者不使用死蛇叉)

根据提议者公关。因此,无论是安装python3-distutils还是使用死蛇如果遇到此问题,fork 也应该修复。

最后,Debian/Ubuntu 也努力解决这个问题,使posix_prefix方案总体上更加稳健。这并不是第一次因为安装方案混乱而出现的问题,这一点显而易见在这次讨论中

答案2

我遇到了与您同样的问题,虽然我不知道您的问题的答案,但我发现切换到 venv 在几分钟内解决了我的问题...它似乎是管理 python 虚拟环境的现代、首选的“一种”方法。

来源

如何设置 venv

答案3

对我有用的“解决方案”是降级 setuptools:pip install setuptools==59.6.0

相关内容