簡體   English   中英

python模塊導入錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM