即使在验证可执行文件和 pip 正确之后,Python venv 中也会出现 ModuleNotFoundError

问题描述 投票:0回答:1

尝试运行从 github 下载的项目。运行虚拟环境。由于其自冲突的requirements.txt,安装过程非常艰苦,我设法pip安装所有包要求,但我仍然在几个模块上收到ModuleNotFoundError。

我通过在 powershell 中导航到我的项目目录并运行来创建并激活我的虚拟环境

python -m venv .venv
,然后
.venv/Scripts/activate

激活 venv 后: 我运行了

pip install -r requirements.txt
并手动解决了冲突。这些冲突都不是错误中命名的模块。 我按照项目的说明运行了
python -u main.py

这会产生许多 ModuleNotFoundErrors。

我的下一步是确保 pip install 和 python 可执行文件是我想要运行的,所以我运行了

where.exe python
,其中显示
C:\[mypath]\.venv\Scripts\python.exe
python -m site
还显示了预期的路径。

我运行了

python -m pip --version
,显示来自
C:\[mypath]\.venv\lib\site-packages\pip (python 3.9)
的pip 24.0,这对我来说似乎是正确的

Pip 列表显示所有已安装的软件包。

我不明白为什么Python找不到这些模块。

编辑: 当我单独运行每个 .py 文件时,一切似乎都工作正常。当我尝试从 main.py 一次运行整个过程时,我只会收到 ModuleNotFoundErrors。

主文件看起来像这样:

import subprocess

files_to_run = [
    'file1.py',
    'file2.py',
    'file3.py'
]

for file in files_to_run:
    subprocess.run(['python', file])
python python-venv
1个回答
0
投票

所以我想我解决了这个问题:

问题似乎出在主文件中,当 subprocess.run 运行 python 命令时,它从用户安装运行 python.exe,而不是从虚拟环境运行。指定 venv python.exe 的路径解决了该问题。

© www.soinside.com 2019 - 2024. All rights reserved.