摘要:要避免錯誤,要保證在導入模塊中內容時,此內容在程序執(zhí)行到此處時已定義。改為中的實際示例導入定義使用導入使用導入使用文件改為定義導入使用
Python 項目逐漸增大,循環(huán)導入時,一不留神可能碰到錯誤:
ImportError: cannot import name ‘’
出現此問題一般是因為在導入模塊時順序上了問題
看如下例子:
./test ├── main.py ├── sub_a.py ├── sub_b.py
# main.py from sub_a import x print(x + 1)
# sub_a.py from sub_b import b a = 1 x = a + b print(x)
# sub_b.py from sub_a import a b = a + 1
運行:
python module_a.py
Traceback (most recent call last): File ".main.py", line 1, infrom sub_a import x File "~ estsub_a.py", line 1, in from sub_b import b File "~ estsub_b.py", line 1, in from sub_a import a ImportError: cannot import name "a"
由main.py進入sub_a.py 中執(zhí)行from sub_b import b語句,在這里程序進入sub_b.py中執(zhí)行,"sub_a.py"程序暫停執(zhí)行,此時需要在sub_b.py使用的sub_a.py 中的 a = 1 變量還沒有生成,因此出現了上述錯誤。
要避免錯誤,要保證在導入模塊中內容時,此內容在程序執(zhí)行到此處時已定義。
module_a.py 改為:
a = 1 from sub_b import b x = a + bFlask 中的實際示例:
# app.py from flask_mongoengine import MongoEngine # 導入 from .views.main import main as main_blueprint # 定義 db = MongoEngine() # 使用 app.register_blueprint(main_blueprint)
# views.main.py # 導入 from user import User # 使用 Users.objects()
# users.py # 導入 from app import db # 使用 class Users(db.Document): id = db.StringField(primary_key=True) name = db.StringField(required=True)
app.py 文件改為:
# app.py from flask_mongoengine import MongoEngine # 定義 db = MongoEngine() # 導入 from .views.main import main as main_blueprint # 使用 app.register_blueprint(main_blueprint)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/40726.html
摘要:是一種常用的深度學習框架,主要應用在視頻圖像處理方面的應用上。由于沒錢買,只能在虛擬機環(huán)境下配置版開發(fā)環(huán)境,大家勿笑。 caffe是一種常用的深度學習框架,主要應用在視頻、圖像處理方面的應用上。由于沒錢買gpu,只能在虛擬機環(huán)境下配置Ubuntu CPU版caffe開發(fā)環(huán)境,大家勿笑。 1.首先,先安裝依賴庫: sudo apt-get install libprotobuf-dev...
摘要:,引言的架構初探一文講解了的架構,本文就實際來安裝運行一下爬蟲。第一次運行的測試成功,接下來的工作接下來,我們將使用來實現網絡爬蟲,省掉對每個人工去生成和測試的工作量。,文檔修改歷史,首次發(fā)布 1,引言 《Scrapy的架構初探》一文講解了Scrapy的架構,本文就實際來安裝運行一下Scrapy爬蟲。本文以官網的tutorial作為例子,完整的代碼可以在github上下載。 2,運行環(huán)...
摘要:當通過方式安裝時,可能會遇到以下錯誤??偨Y下來,共找到以下兩種方法方法一下載,解壓后,把放到目錄下,重新執(zhí)行命令。但是通過上面發(fā)現,之所以會出錯,是因為目錄下的選擇了的安裝方式。最后,通過源碼重新編譯即可安裝成功。把中的獲取,直接改為 當通過pip方式安裝opencc時,可能會遇到以下錯誤:ImportError: No module named distribute_setup。 p...
In official Doc. of Python 3, there is a short introduction to embedding Python in another application like C/C++ (seeEmbedding Python in Another Application). The common procedure is as follows, w...
摘要:服務器上版本過低,升級為,而未升級,導致在執(zhí)行時報這個錯誤。報錯報錯解決方案查看版本,執(zhí)行可以查看到存在兩個版本的。將原有的改為老版本跳出再次執(zhí)行,即可使用。解決方案方法一同,不建議。 原因: yum是Python寫的。服務器上Python版本過低,升級為2.7,而yum/pip未升級,導致在執(zhí)行yum/pip時報這個錯誤。yum報錯: There was a problem impo...
閱讀 1422·2023-04-26 01:58
閱讀 2298·2021-11-04 16:04
閱讀 1789·2021-08-31 09:42
閱讀 1777·2021-07-25 21:37
閱讀 1075·2019-08-30 15:54
閱讀 2083·2019-08-30 15:53
閱讀 3059·2019-08-29 13:28
閱讀 2700·2019-08-29 10:56