【发布时间】:2018-10-14 14:40:30
【问题描述】:
在高层次上,我的项目结构如下所示。
dir/
moduleA/
__init__.py
file1.py
file2.py
main.py
file2.py 包含一些我在 file1.py 中导入的全局变量
# --- file2.py schema ---
SOME_GLOBAL_VARIABLE = 1
。
# --- file1.py schema ---
from moduleA.file2 import SOME_GLOBAL_VARIABLE
class MyClass():
def __init__(self):
self.some_attr = SOME_GLOBAL_VARIABLE
def run():
print(self.some_attr)
当我在下面运行 main.py 时,它创建了一个 MyClass 的实例,代码运行没有错误。
# --- main.py ---
from moduleA.file1 import MyClass
x = MyClass()
x.run()
但是,当我打开一个 Python 控制台并执行以下命令以从 file1.py 导入 MyClass 时,我收到一个导入错误,即没有名为 moduleA 的模块。
from moduleA.file1 import MyClass
# (... some traceback statements)
from moduleA.file2 import SOME_GLOBAL_VARIABLE
ModuleNotFoundError: No module named 'moduleA'
这怎么可能在Python明确找到moduleA/file1.py的时候,否则无法尝试执行该行
from moduleA.file2 import SOME_GLOBAL_VARIABLE
我觉得奇怪的是,当我运行 main.py 脚本时它运行时没有错误。
我想这是由于我对 Python 如何准确地导入模块缺乏了解,因此非常感谢任何帮助。我尝试在 moduleA 中添加 init.py 文件,但这并没有解决问题。
如果此信息相关,则路径 some_path/dir 位于我的 PYTHONPATH 上。
【问题讨论】:
标签: python import module subdirectory