导入错误:尝试在没有已知父包的情况下进行相对导入

2024-04-18 13:34:49 发布

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

你能告诉我如何正确地进行相对导入吗

项目结构:

p1
|-  x1
|  |-  __init__.py
|  |-  x1_module1.py
|- x2
   |-  __init__.py
   |-  x2_module1.py

在x2_modules.py中

try:
    from p1.x1.x1_module import temp_func
except Exception as e:
    print('Failed "from p1.x1.x1_module import temp_func"')
    print(e)

try:
    from .x1.x1_module import temp_func
except Exception as e:
    print('Failed "from .x1.x1_module import temp_func"')
    print(e)

try:
    from ..x1.x1_module import temp_func
except Exception as e:
    print('Failed "from ..x1.x1_module import temp_func"')
    print(e)

输出:

Failed "from p1.x1.x1_module import temp_func"
No module named 'p1'
Failed "from .x1.x1_module import temp_func"
attempted relative import with no known parent package
Failed "from ..x1.x1_module import temp_func"
attempted relative import with no known parent package
[Finished in 0.2s]

要了解更多信息,请查看以下图片: enter image description here


Tags: frompyimportasexceptiontempmodulefunc
2条回答

如果从p1目录调用python脚本,则应该可以:

from x1.x1_module1 import temp_func

要查看python搜索模块的位置列表,请使用以下命令:

import sys
print(sys.path)

sys.path的第一个条目应该是运行脚本的目录,我假设它是p1

项目结构:

p1
|-  x1
|  |-  __init__.py
|  |-  x1_module1.py
|- x2
   |-  __init__.py
   |-  x2_module1.py

编辑:代码不符合PEP-8,很难阅读。一、 因此,对其进行了优化

请尝试以下代码:

import sys
import os

PACKAGE_PARENT = '..'

SCRIPT_DIR = os.path.dirname(
    os.path.realpath(
        os.path.join(
            os.getcwd(),
            os.path.expanduser(__file__)
            )
        )
    )

sys.path.append(
    os.path.normpath(
        os.path.join(
            SCRIPT_DIR,
            PACKAGE_PARENT
            )
        )
    )

from x1.x1_module import tempfunction

它起作用了🤗

问候 伊桑·卡普尔

相关问题 更多 >