python:从父__init__.py文件导入?

我已经定义了一个方法foo和一个文件bar中有一个方法的类foo_bar__init__.py

dir/
   __init__.py
   runme.py

现在我想__init__.pyrunme.py

我努力了

# in runme.py

from . import foo

foo()

import foo

foo()

但两者都不起作用。我正在使用 Python 3.7 和 Windows 10 Home

我已经阅读了如何导入 __init__.py 中定义的类并做了一些研究。

Python 的例外是:

ImportError: attempted relative import with no known parent package
# __ init __.py 

def foo():
   print("Im Foo") 
class bar:
    def __init__():
        pass
    def foo_bar(self):
        print("Im Foo_Bar in class bar")
洛朗·拉波特

如果pkg是你的主要包,你可以导入它(又名pkg/__init__.py文件):

import pkg

如果你想要foo_bar这个包中函数,你可以这样写:

from pkg import foo_bar

因此,在runme.py模块中,您可以执行以下操作:

from pkg import foo_bar

foo_bar(...)

当然,您需要runme.py从根目录(目录的父pkg目录)调用您的模块

python pkg/runme.py
# or
python -m pkg.runme

请考虑阅读将模块作为脚本执行

编辑 1

您可以将项目根目录添加到sys.path

# in `runme.py`:
def _fix_sys_path():
    import os
    import sys

    HERE = os.path.abspath(os.path.dirname(__file__))  # /path/to/project_dir/pkg
    PROJECT_DIR = os.path.dirname(HERE)  # /path/to/project_dir
    sys.path.insert(0, PROJECT_DIR)


_fix_sys_path()
from pkg import foo_bar

foo_bar(...)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python __init__文件无法导入模块

如何使用 __init__ 在 python 中导入顶级文件

从 python shell 导入自己的 *.py 文件

Python - __init__ 是否在导入后执行?

Ableton Python __init__ 自文件刷新

如何将python文件(.py)导入主python文件

组织__init__.py文件时出现循环导入错误

__init__.py中断pyinstaller时如何正确导入文件

导入__init__

从父目录python导入文件中的函数

是否可以将Python模块(.py文件)导入dict?

.py 文件中的 Python Tkinter 日历小部件导入错误

如何在Jupyter Notebook中导入python .py文件

如何从python3的子文件夹中导入模块(空__init__.py)

如何从python3的子文件夹中导入模块(空__init__.py)

在python中导入子包时出现问题:如何编写__init__.py文件

已安装 Python 包,但 __init__ 中的内容不可导入

导入时未调用Python自定义__init__

Python导入提供了即使在__init__之后也找不到的packge

如何强制 setup.py 包含 `__init__.py` 文件并使我的包可导入?

Python从其他.py文件调用导入的函数,但是导入的函数无法在主文件中看到其他导入的moduel

从父目录导入文件

从父类扩展python 3中的__init__的正确方法

在Python中从__init__.py导入函数

如何跨文件结构导入类和文件;__init__.py 混淆

为什么__init__.py将文件夹中的所有文件作为模块导入?

__init__文件无法在python中按预期工作

import __foo__是否从foo包的__init__文件导入?

从父包导入Python