问题:
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
- virtualenvwrapper==4.8.4
问题:
- 如何在忽略选项的情况下再次
virtualenv
安装我的环境?<envname>/bin
posix_local
- 修复此问题的原因是否仍然适用于 Python 3?(我必须承认我并没有真正理解为什么首先需要补丁的原因。)
virtualenv的 GitHub 上的用户yingmanwumen在这个问题上发布了一个解决方案:
基本上,他们通过在他们选择的 shell 中导出以下变量来更改 sysconfig 方案:
这会将默认安装方案从
posix_local
产生问题行为的更改为deb_system
再次具有正常/预期的虚拟环境布局的安装方案。可以使用以下代码检查当前的安装方案:需要注意的是,这是一个临时解决方案。一个真正的解决方案可能包括改变这种行为
virtualenv
本身。yingmanwumen 的问题以及我自己的问题解决了该posix_local
方案的问题。的开发人员virtualenv
愿意接受 PR 以解决根本问题。如果提出并接受解决该问题的 PR,我将更新此答案。我和你有同样的问题,虽然我没有你的问题的答案,但我确实发现切换到 venv 在几分钟内解决了我的问题......这似乎是管理 python 的现代、首选的“一种”方式虚拟环境。
资源
如何设置venv
对我有用的“解决方案”是降级 setuptools: pip install setuptools==59.6.0