【问题标题】:How to load files from subfolder into the main package如何将子文件夹中的文件加载到主包中
【发布时间】:2021-09-28 02:53:47
【问题描述】:

我有一个python项目,结构如下

package/__init__.py
package/foo.py
package/subFolder/__init__.py
package/subFolder/myModule.py

我希望能够在包级别导入 myModule

import package.myModule

我已尝试使用

导入package/__init__.py 中的模块
from .subfolder import *

没有成功...

很遗憾,我无法更改文件夹结构。

【问题讨论】:

    标签: python import package setuptools


    【解决方案1】:

    如果您想保持自动完成功能正常工作,您可以生成__init__.py 并用适当的符号填充__all__

    【讨论】:

      【解决方案2】:

      如果我正确理解您的情况, 您有一个包含脚本的项目目录和一个包含定义模块的文件的子文件夹。

      从项目目录中的脚本中,要访问您的模块,以下内容应该可以工作:
      from subFolder.myModule import *

      【讨论】:

      • 好的,但这仅在我列出子文件夹中的所有模块时才有效。我想要的是这样的:from subFolder.* import *
      【解决方案3】:

      我最终的结果是将 subFolder 中的所有模块附加到 subFolder.__init__.py 中的 __all__ 属性,并带有以下 sn-p:

      import pathlib
      file_path = pathlib.Path(__file__).parent.glob('*.py')
      __all__ = [path.stem for path in file_path if '__' not in path.stem]
      

      package/__init__.py:

      from .generated_execution_layer import *
      

      这样做的一个丑陋的副作用是,它破坏了此导入模块的自动完成功能。

      【讨论】:

        猜你喜欢
        • 2011-05-24
        • 1970-01-01
        • 1970-01-01
        • 2013-09-03
        • 2019-11-13
        • 1970-01-01
        • 2016-02-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多