【发布时间】:2020-11-17 04:09:55
【问题描述】:
我的目录是这样的:
isds:
__init__.py
jobs:
__init__.py
adhoc:
__init__.py
test.py
test2.py
我的两个文件是这样的。
test.py:
import sys
x = 10
test2.py:
import sys
from isds.jobs.adhoc.test import *
print(x)
当我从与 test2.py 相同的目录运行“python3 test2.py”时,我收到此错误:ModuleNotFoundError: No module named 'isds.jobs.adhoc.test'
为什么会这样?我有 init.py 文件,我认为我的绝对导入语句是正确的......但也许不是?
谢谢!
【问题讨论】:
-
因为 Python 没有理由将父目录
isds视为查找模块或包的地方。您应该使用相对导入从同一个包中获取代码。 -
这能回答你的问题吗? Relative imports in Python 3
-
为什么不使用
from test import *,因为它在同一个目录中 -
大家好,是的,{from test import *} 确实有效!所以,我知道问另一个问题不是最好的礼仪,但我正在推断我面临的真正问题:所以,假设 test2.py 位于:“isds.jobs2.adhoc2.test2.py”并假设应该有 init.py 文件。导入语句不应该是“from isds.jobs.adhoc.test import *”吗?我仍然收到与之前报告的相同的错误。
-
@fjjones88 question linked by Karl 给出了使用
-m标志运行它的“正确”方式作为已接受答案的一部分,如果你有的话,我已经在此处发布了具体用例作为答案如有任何进一步的问题或澄清,请随时对我的回答发表评论。
标签: python python-3.x import