Pipenv 和 ModuleNotFoundError

Pipenv and ModuleNotFoundError

我花了几个小时研究这个问题,但没有成功。 我看过各种 SO 讨论,none 似乎解决了我的问题,所以我的问题是出于纯粹的挫败感... 我正在尝试在 windows 批处理文件中启动脚本。问题是当我执行脚本时失败,因为它找不到一些使用的模块。

经过各种尝试,我发现批处理文件方面在现阶段似乎无关紧要。

所以,暂时忽略批处理文件,如果我 运行 这样的脚本

pipenv run python myscript.py

有效。如果我 运行 以下它不会

path-to-env\Scripts\activate

python myscript.py

它 returns 一个错误 ModuleNotFoundError: 没有名为 'xxx' 的模块 它激活 venv OK,但有些地方不对,因为它找不到脚本中使用的代码

在我的IDE(视觉代码)中一切正常

我确实有一个相当复杂的目录结构,但考虑到 IDE 和“pipenv 运行 python myscript.py”都按预期工作,这一定是由于别的。

关于我需要寻找的地方有什么想法或指示吗?恐怕我对 pipenv 的理解不足以解决这个问题 ;)

编辑

在我尝试解决这个问题时,我添加了 PYTHONPATH= 行。到我的 .env 文件。这似乎是允许这条线工作的原因:

pipenv run python myscript.py

如果我删除它,那么上面的代码也会生成 ModuleNotFoundError

好的,在尝试了很多不同的组合之后,我终于设法让它工作了。 虽然我不知道为什么这个解决方案有效而其他人没有..

需要两个批处理文件。

启动 python 脚本,其中包含这样一行

python myscript.py

另一个是通过 pipenv 创建环境,然后调用第一个批处理文件

会有这样一行

pipenv run \path\to\first\batchfile.bat

此组合有效,并且可以从 Windows 任务计划程序

中成功调用