诗歌无法从由"poetry run"运行的脚本中的子文件夹导入



项目结构如下:

.
├── README.md
├── pyproject.toml
...
my_project_name/
├── moduleA.py
├── moduleB.py
└── FolderC
└── moduleC.py

moduleA.py:

from .moduleB import moduleB_func
from .FolderC.moduleC import moduleC_func
...

pyproject.toml:中的脚本

funcA_run = my_project_name.moduleA:funcA

(funcA函数只是一个例子——在导入的第二行开始编译时出现异常(

如果我在项目目录中键入poetry run funcA_run(其中my_project_name文件夹、readme.rst、pyproject.toml和其他诗歌文件(,模块B成功导入,但子文件夹中的模块C不是:

ImportError:无法从"FolderC"(未知位置(导入名称"moduleC_func">

从导入中删除.没有帮助。

import FolderC.moduleC.moduleC_func我得到

ModuleNotFoundError:没有名为"FolderC.moduleC_func"的模块

如果moduleC.py导入将在moduleB.py中,则会发生同样的情况。

因此,由于这个原因,我无法运行任何包含从我的项目中导入的本地相对的脚本。

诗歌版本为1.1.14

编辑:此问题中显示的问题是不可修复的。我的回答中有更多细节

问题在某种意义上得到了解决。出于某种原因,poetry run需要另一种导入格式。

结构如下:

├── README.md
├── pyproject.toml
...
my_project_name/
├── moduleA.py
└── FolderC
└── moduleC.py
└── moduleC_2.py

如果moduleC.pymoduleC_2.py导入某些内容,而我在moduleA.py中导入moduleC.py,则在以下两种情况下,导入看起来应该不同:

如果我使用poetry run:将moduleA.py作为脚本运行

# moduleA.py:
from .FolderC import moduleC.py  # with .
# moduleC.py
from .moduleC import some_func  # relatively folderC and with .

如果我使用python moduleA.py:手动运行moduleA.py

# moduleA.py:
from FolderC import moduleC.py  # without .
# moduleC.py
from folderC.moduleC import some_func  # relatively my_project/ and without .

相关内容

  • 没有找到相关文章

最新更新