python:是否从父_uinit__u;.py文件导入?

2024-04-25 13:10:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经定义了一个方法foo和一个类bar,它在__init__.py文件中有一个方法foo_bar

dir/
   __init__.py
   runme.py

现在我想从runme.py导入__init__.py

我试过了

# in runme.py

from . import foo

foo()

import foo

foo()

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

我读过{a1}并做了一些研究

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")

Tags: 文件方法inpyimport定义fooinit
1条回答
网友
1楼 · 发布于 2024-04-25 13:10:52

如果pkg是您的主要软件包,您可以通过以下操作导入它(也称为pkg/__init__.py文件):

import pkg

如果您想在这个包中使用foo_bar函数,可以编写:

from pkg import foo_bar

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

from pkg import foo_bar

foo_bar(...)

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

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

请考虑阅读Executing modules as scripts

编辑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(...)

相关问题 更多 >