【问题标题】:import python modules in init file在 init 文件中导入 python 模块
【发布时间】:2017-06-14 12:22:50
【问题描述】:

我的 Python 脚本结构如下:

Folder:
    -main.py
    SubFolder:
        -file1.py
        -file2.py
        -filen.py
        -__init__.py

file1 有一个模块,我们称之为“module1()”和一个变量“variable1”。

file2 有“module2()”和“variable2”等

到目前为止,效果很好,我是这样用的:

主要:

from subFolder import file1, file2
file1.module1()
file2.module2(file1.variable1)

file1.variable1

但由于子文件夹中有很多文件,我想让它更干净优雅。 我尝试在 init.py 文件中写这个

from file1 import module1
from file2 import module2
etc

然后在主要的:

 import subFolder as sf
 sf.module1()
 sf.module2(sf.variable1)  <--

这似乎适用于模块,但不适用于变量(由箭头指示)。 我应该怎么办?难道我做错了什么? 提前致谢

【问题讨论】:

    标签: python init python-module


    【解决方案1】:

    您需要显式导入它,但由于您提到您的package“子文件夹”中有很多模块,我建议您使用dunder__all__ 所以你可以输入:

    from subFolder import *
    

    它会将您在__all__ 中指定的所有内容导入到您的__init__.py 中。

    有关更多详细信息和示例,请参阅@alec-thomas here 的回答。

    优点:

    • 无需明确指定每个模块、函数或变量。
    • 一次导入即可为您带来所需的一切。

    缺点:

    • 您必须记住每次在子模块中添加、重命名或删除内容时更新__all__
    • 随着时间的推移,一旦您拥有大量子模块,就会不清楚究竟要导入什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-01
      • 2013-08-26
      • 2020-08-29
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      相关资源
      最近更新 更多