【问题标题】:Relative import in Python 3.6Python 3.6 中的相对导入
【发布时间】:2018-02-22 15:32:26
【问题描述】:

我想在 Python 3 中使用相对导入。

我的项目:

main_folder
  - __init__.py
  - run.py
  - tools.py

我想在 run.py 中(MyClass 在 __init__.py 中声明):

from . import MyClass

在run.py中:

from .tools import my_func

ImportError 被加注。

或者,使用绝对导入,PyCharm 中的调试不起作用,并且该库从已安装的包中获取,而不是从我的目录中获取。

我知道一种方法,但它很糟糕:

sys.path.append(os.path.dirname(os.path.realpath(__file__)))

如何在我的项目中使用这个导入?

【问题讨论】:

标签: python python-3.x python-import relative-path


【解决方案1】:

当你使用 PyCharm 时,它会自动将当前模块设为 main,因此像 from . import <module> 这样的相关语句将不起作用。 read more here.

要解决您的问题,请将 __init__.pytools.py 文件放在子目录中

main_directory/
    run.py
    sub_directory/
        __init__.py
        tools.py

在您的 run.py 文件中,将以下内容写为您的导入语句

from sub_directory import tools
from sub_directory.__init__ import MyClass

编辑:正如@9000 提到的,您可以写from sub_directory import MyClass 并实现相同的目标。

【讨论】:

  • from sub_directory.__init__ import MyClass 很尴尬;只需from sub_directory import MyClass即可达到同样的效果。
猜你喜欢
  • 2023-03-03
  • 2018-05-15
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
  • 2011-05-09
  • 2018-12-23
  • 2014-03-09
  • 2013-09-16
相关资源
最近更新 更多