繁体   English   中英

ImportError:尝试在没有已知父 package 的情况下进行相对导入:(

[英]ImportError: attempted relative import with no known parent package :(

我正在尝试从我的 Items 文件中导入脚本,但我不断收到错误消息

 from .Items.Quest1_items import *

from .Items.Quest1_items import *
ImportError: attempted relative import with no known parent package

Process finished with exit code 1

这是我的项目树,我正在从 main.py 文件运行脚本

Quest1/
|
|- main.py
|
|- Items/
| |- __init__.py
| |- Quest1_items.py

从头开始删除点。 自动找到相对于main.py的相对路径。

from Items.Quest1_items import *

您只能在您导入的 package 内执行相对导入(即,以点开头)。 例如,想象一下这种情况:

project/
├ main.py
├ mylib/
├ __init__.py
│ ├ module1.py
│ └ module2.py

main.py中,您将拥有import mylibfrom mylib import * ,但在module1.py中,您可以拥有from. import module2 from. import module2 ,因为这里的. 代表mylib (这是一个 python package,因为您在main.py中导入了它)。

因此,解决方案只是删除点,它在您的情况下没有用。

简单地说:如果你使用相对导入,你可以在你的代码使用的最外层文件上方的两层上运行你想要运行的文件,使用'python -m your_module_path'。

如下所示,如果要运行run.py ,则需要 go 到它上面的两层,然后运行python -m dir1.dir2.run (不带.py )。

.../dir1/dir2/
    -test
        -test1.py
            from .test2 import *
        -test2.py
    -run.py
        from .test.test1 import *

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM