Python-从子文件夹执行绝对导入

2022-03-31 00:00:00 python python-import

问题描述

基本上我问的问题和这个人一样:How to do relative imports in Python?

但是没有人给他一个正确的答案。假设您在一个子文件夹中,并且您想要转到一个目录,然后再转到另一个子文件夹,那么按照他们的建议执行操作是不起作用的(正如OP在他对他们的答案的评论中指出的那样)。

我知道您可以使用sys.Path来完成此操作,但我希望使用更干净的方法。

示例:

App
__init__.py
Package_A
--__init__.py
--Module_A.py
Package_B
--__init__.py
--Module_B.py

如何将模块_A导入模块_B?


解决方案

main.py
setup.py
app/ ->
    __init__.py
    package_a/ ->
       __init__.py
       module_a.py
    package_b/ ->
       __init__.py
       module_b.py
  1. 您运行python main.py
  2. main.py执行:import app.package_a.module_a
  3. module_a.py是否import app.package_b.module_b

或者2或3可以使用:from app.package_a import module_a

只要您的PYTHONPATH中有app,即可使用。main.py当时可能在任何地方。

因此您编写setup.py以将整个应用程序包和子包复制(安装)到目标系统的python文件夹,并main.py复制(安装)到目标系统的脚本文件夹。

相关文章