[英]python module importing error
我有以下结构:
AXBot:
__init__.py
bot.py
util.py
settings.py
creator
__init__.py
xbot.py
问题是我无法在“ xbot.py”中导入“ util”模块,因为python结尾于“ ImportError:没有名为util的模块” ...我该如何解决?
PS:我正在使用以下代码导入:
import util
import settings
谢谢。
使用相对导入
from . import util
from . import settings
我建议改变文件夹的层次结构,对我来说看起来更干净。 还要检查您的PYTHONPATH,它通常应该按照您的方式工作。
参考文献:
尝试远离 sys.path hacks。
我认为命名空间不正确。 从xbot.py,尝试使用此导入命令
from AXBot import util
from AXBot import settings
看来您正在尝试从creator
文件夹中运行xbot.py
这是我通过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
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
收到后一个错误from . import util
from . import util
。
如果从包含xbot.py
的目录中运行xbot.py
,则Python无法确定它是在程序包层次结构中运行的。 它认为xbot.py
不在软件包中。
我将尝试from AXBot import util
导入util
的行替换为上一行,并使用Python的-m
命令行开关运行了xbot.py
,该命令行告诉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
)。
您在哪里是最重要的问题! 据此,您可以使用import
。 请更新您的问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.