【问题标题】:How to import a project subfolder so that it is available once the installed project has been imported?如何导入项目子文件夹,以便在导入已安装的项目后可用?
【发布时间】:2018-02-06 15:44:02
【问题描述】:

如何导入项目子文件夹,以便在项目导入后可用?

例如如何导入project.tools的内容,以便使用import project导入项目后,project.tools.common.function()可用?

project
|
|--tools
|  |--__init__.py
|  \--common.py
|
|--__init__.py
|--core.py
\--cli.py

我尝试了以下方法:

  1. from . import tools in project/__init__.pyfrom . import * in project/tools/__init.py 导致:ImportError: cannot import name 'tools'
  2. from .tools import * in project/__init__.pyfrom . import * in project/tools/__init.py 导致:ModuleNotFoundError: No module named 'project.tools'
  3. from .tools import common in project/__init__.pyfrom . import * in project/tools/__init.py 导致:ModuleNotFoundError: No module named 'project.tools'

【问题讨论】:

标签: python import python-packaging


【解决方案1】:

直接在您的 .py 脚本中使用 import tools。 然后在函数调用中使用tools.common.function()

当您将 init.py 放入您的文件夹时,该文件夹变为可调用的。 因此,您可以将该文件夹及其脚本直接导入到您的脚本中。

【讨论】:

    【解决方案2】:

    这将解决您的问题

    import tools.common as COMMON
    COMMON.function()
    

    【讨论】:

    • 结果:ModuleNotFoundError: No module named 'tools'
    • 你把我的代码放在了哪个文件里?这应该放在你的主脚本(core 或 cli.py)中
    • project/__init__.py
    • 这应该放在你的主脚本(核心或cli.py)'init.py'文件应该是空的
    • AttributeError: module 'project' has no attribute 'tools'project 是一个可安装的项目,而不是一个脚本/文件夹
    猜你喜欢
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    相关资源
    最近更新 更多