Python 从另一个模块内部导入一个模块

Python 从另一个模块内部导入一个模块,python,module,Python,Module,基本上,我已经为我的Python程序编写了两个模块。我需要一个模块来导入另一个模块 下面是我的文件结构示例 test_app main.py module_1 __init__.py main.py module_2 __init__.py main.py Main.py可以导入这两个模块中的任何一个,但是我需要module_1来导入module_2,这可能吗?是的。如果您的PYTHONPATH环境变量

基本上,我已经为我的Python程序编写了两个模块。我需要一个模块来导入另一个模块

下面是我的文件结构示例

test_app 
    main.py
    module_1
        __init__.py
        main.py

    module_2
        __init__.py
        main.py

Main.py
可以导入这两个模块中的任何一个,但是我需要
module_1
来导入
module_2
,这可能吗?

是的。如果您的
PYTHONPATH
环境变量设置为
test\u app
,您应该能够从
module2
导入
module1
,反之亦然

我假设您的程序是这样运行的:

python test_app/main.py

并且程序导入
module1.main
,这反过来又导入
module2.main
。在这种情况下,不需要更改
PYTHONPATH
的值,因为Python已经向其添加了test\u app目录。请参阅Python文档中的部分。

如果您是从
test\u app/main.py
启动程序的,您可以在
test\u app/module\u 2/main.py
文件中使用
from module\u 1 import main

在您的模块_1模块中。在任何文件中:

from module_2 import your_function, your_class

python官方文档在名为包内参考的部分中回答了这个问题

子模块通常需要相互引用。 您不需要关心PYTHONPATH,相对路径的声明就可以了。 对于你的情况

只需在module_1/main.py中键入“import..module2”

如果您添加一个(空的)
\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。这意味着python将更智能地搜索模块/包

完成后,在模块1中,您现在可以编写
import test\u app.module2
(或
import..module2
)并正常工作


(此答案由此处的其他注释和答案组合而成,因此CW)

无需设置
PYTHONPATH
:“import
语句首先查找包含的包,然后再查找标准模块搜索路径”()。但在这种情况下,没有包含的包,由于test_应用程序不包含
\uuuuu init\uuuuuu.py
。任何不包含的原因__直接在测试应用程序下初始化.py?包导入帮助。子包工作得更好。。参见我的答案。在Python术语中,
module_1
module_2
是包,而不是模块
main
module_1.main
module_2.main
是您的模块。