看来您正试图xbot.py
从creator
文件夹中运行。
这是我得到的输出xbot.py
包含import util
:
C:\Users\Luke\Python stuff\AXBot\creator>xbot.py
Traceback (most recent call last):
File "C:\Users\Luke\Python stuff\AXBot\creator\xbot.py", line 4, in <module>
import util
ImportError: No module named util
这是我得到的xbot.py
输出from . import util
C:\Users\Luke\Python stuff\AXBot\creator>xbot.py
Traceback (most recent call last):
File "C:\Users\Luke\Python stuff\AXBot\creator\xbot.py", line 3, in <module>
from . import util
ValueError: Attempted relative import in non-package
我也用from .. import util
而不是得到后一个错误from . import util
。
如果您xbot.py
从包含它的目录运行,Python 无法判断它是在包层次结构中运行的。它认为xbot.py
不在包裹内。
我用 替换了尝试导入的行,util
向上from AXBot import util
移动了几个目录并xbot.py
使用 Python 的-m
命令行开关运行,它告诉 Python 运行由模块名称而不是文件名指定的模块。请注意,当您使用 时-m
,您传入模块的完全限定名称,包括包层次结构,但您不包括文件扩展名.py
,因为它不是模块名称的一部分:
C:\Users\Luke\Python stuff\AXBot\creator>cd ..\..
C:\Users\Luke\Python stuff>python -m AXBot.creator.xbot
1232
如果我使用import AXBot.util as util
而不是from AXBot import util
.
(我没有要运行的代码,所以我将一个变量放入util.py
并尝试从内部打印它的值xbot.py
。这个变量的值是1232
。)