2024-04-26 13:27:00 发布
网友
我有以下结构:
AXBot: __init__.py bot.py util.py settings.py creator __init__.py xbot.py
问题是,我无法在“xbot.py”中导入“util”模块,因为python以“importTerror:没有名为util的模块”结尾。。。我该怎么解决?
PS:我正在使用以下代码导入:
import util import settings
谢谢你。
似乎您正试图从creator文件夹中运行xbot.py。
creator
xbot.py
这是我用xbot.py得到的输出,包含import util:
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
如果从包含它的目录中运行xbot.py,Python无法判断它是在包层次结构中运行的。它认为xbot.py不在包中。
我用from AXBot import util替换了试图导入util的行,向上移动了几个目录,并使用Python的-m命令行开关运行xbot.py,该开关告诉Python运行由模块名而不是文件名指定的模块。请注意,使用-m时,会传入模块的完全限定名,包括包层次结构,但不包括文件扩展名.py,因为这不是模块名称的一部分:
from AXBot import util
util
-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,则得到相同的输出。
import AXBot.util as util
(我没有运行您的代码,因此我将变量放在util.py中,并试图从xbot.py中打印其值。这个变量的值是1232。)
util.py
1232
我认为命名空间不对。从xbot.py,尝试使用此导入命令
from AXBot import util from AXBot import settings
使用relative importing
from . import util from . import settings
不过,我还是建议更改你的文件夹层次结构,这样看起来更清晰。还要检查你的Python,它应该正常工作的方式,你这样做。
参考文献:
尽量远离sys.path hacks。
似乎您正试图从
creator
文件夹中运行xbot.py
。这是我用
xbot.py
得到的输出,包含import util
:这是我用
xbot.py
获得的输出,包含from . import util
我还用
from .. import util
而不是from . import util
得到后一个错误。如果从包含它的目录中运行
xbot.py
,Python无法判断它是在包层次结构中运行的。它认为xbot.py
不在包中。我用
from AXBot import util
替换了试图导入util
的行,向上移动了几个目录,并使用Python的-m
命令行开关运行xbot.py
,该开关告诉Python运行由模块名而不是文件名指定的模块。请注意,使用-m
时,会传入模块的完全限定名,包括包层次结构,但不包括文件扩展名.py
,因为这不是模块名称的一部分:如果使用
import AXBot.util as util
而不是from AXBot import util
,则得到相同的输出。(我没有运行您的代码,因此我将变量放在
util.py
中,并试图从xbot.py
中打印其值。这个变量的值是1232
。)我认为命名空间不对。从xbot.py,尝试使用此导入命令
使用relative importing
不过,我还是建议更改你的文件夹层次结构,这样看起来更清晰。还要检查你的Python,它应该正常工作的方式,你这样做。
参考文献:
尽量远离sys.path hacks。
相关问题 更多 >
编程相关推荐