gpt4 book ai didi

python - Windows Python (<=3.10.2) 无法运行 `python -m venv .venv`

转载 作者:行者123 更新时间:2023-12-05 00:51:52 29 4
gpt4 key购买 nike

此问题已解决,已向 Python.org 报告错误。见我的self-answer below解决方法,直到它在 Python 的 future 版本中得到修复

我的一台电脑被这个 bug 咬住了,它不再允许我创建带有错误的 venv:

Error: Command '['C:\\Users\\kesh\\test\\.venv\\Scripts\\python.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 101.
  • 已知此问题,按时间顺序排列:v3.7.2 , v3.8 , v3.? , & v3.10.1
  • 唯一已知的解决方案是通过选中“为所有用户安装”选项放弃按用户安装并使用全局安装

我试图弄清楚到底发生了什么,但很快就没有想法了。以下是我迄今为止尝试过的:

  • 在我的 PC 上,“为所有用户安装”和在虚拟帐户上按用户安装一样有效(全部使用相同的 v3.10.2 安装程序)。这突出了我的 Windows 帐户的问题。更改安装位置没有帮助。
  • 进入 venv通过使用 venv.main(args=('.venv',)) 运行 Python 来获取源代码,逐行调试,注意到它复制了Lib\venv\scripts\nt\python.exe从 python 安装目录到本地 .venv\Scripts使用 shutil.copyfile() 的文件夹.
  • 如果我运行原始 Lib\venv\scripts\nt\python.exe在命令提示符下,它会运行一条消息 No pyvenv.cfg file (这是有道理的,因为 .cfg 文件位于它看不到的 .venv 文件夹中)
  • 如果我调用复制的 .venv\Scripts\python.exe然后返回错误 Unable to create process using 'C:\Users\kesh\AppData\Local\Programs\Python\Python310\python.exe' (注意 python.exe 进程的路径是安装的 Python exe 的路径)
  • 如果 .venv已成功安装(在虚拟 Windows 帐户上),上述运行会按您的预期启动 Python session 。
  • venv\scripts\nt\python.exe不同于标准 python二进制文件并验证此文件及其来源在 venv\Scripts\nt是相同的。
  • 所有这些都表明我的帐户配置中的某些东西正在困扰 .venv\Scripts\python.exe做正确的事,但我的环境变量非常干净,python 路径位于用户 PATH 变量的顶部。
  • 目前正在寻找.venv\Scripts\python.exe的源代码但还没找到。
  • 它可以是注册表中的东西吗?

如果您有任何其他想法可以尝试,请分享。

更新#1:

  • 找到错误消息的来源PC/launcher.c 814线
  • 可能性:CreateProcessW(NULL, cmdline,...在哪里 cmdline是错误消息中的原始python路径,不带引号。 CreateProcessW documentation states 可执行文件名是从 cmdline 中第一个空格分隔的标记推导出来的。字符串。虽然我用 kesh 替换了我的实际帐户名它实际上包含两个单词和一个空格...

更新 #2:

找到的解决方案如下所示

最佳答案

Bingo,更新 #1 中的发现是原因。我的用户名中的空格是罪魁祸首。 虽然我不知道是什么触发了我帐户的这种行为变化......(任何有答案的人,请跟进。)

假设每个用户的 python 安装在

C:\Users\User Name\AppData\Local\Programs\Python\Python310

在我的例子中,“Microsoft Visual C++ 2015-2022 Redistributable”安装程序 (VC_redist.x64.exe) 留下了一个日志文件 C:\Users\User(一个包含第一部分的文本文件我的帐户名作为其文件名)。这导致 python venv 使用 C:\Users\User 作为 python 可执行文件并立即失败(有关完整说明,请参阅下面的问题跟踪链接)。

在 Python 修复问题之前,您可以通过 2 种方式解决问题。

轻松修复

只需删除文件C:\Users\User

注意:这将一直有效,直到下次另一个安装程序离开这个讨厌的日志文件。

更多涉及的修复

在命令控制台中,运行

DIR /X C:\Users

其中列出了类似的内容:

02/08/2022  11:44 AM    <DIR>                       .
02/08/2022 11:44 AM <DIR> ..
11/19/2020 01:48 AM <DIR> Public
02/08/2022 02:47 PM <DIR> USERNA~1 User Name

打开环境变量对话框并编辑路径用户变量的 Python 条目来自

C:\Users\User Name\AppData\Local\Programs\Python\Python310\Scripts
C:\Users\User Name\AppData\Local\Programs\Python\Python310

C:\Users\USERNA~1\AppData\Local\Programs\Python\Python310\Scripts
C:\Users\USERNA~1\AppData\Local\Programs\Python\Python310

重新打开 python 控制台窗口或应用程序,以便将路径更改应用于您的开发环境。

注意:只要您不更新 python 版本,此修复程序就会起作用。这样做时,您需要手动删除旧的路径条目并更新新的路径条目。

最终修复

我将此错误报告给 python 错误跟踪器:Issue 46686 .他们已经确认了该错误并将其标记为 critical 并提出了修复建议。所以,希望它会在不久的将来的版本中得到修复。 (>3.10.2)

关于python - Windows Python (<=3.10.2) 无法运行 `python -m venv .venv`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71039131/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com