项目结构如下:
.
├── 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.py
从moduleC_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 .