<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在學習Flask框架的藍圖時,遇到導包時用到了`from . 模組 import 物件`,然後試了試直接 import會報錯,直接告訴我找不到模組,發現問題以此記錄。
有一個flask框架的專案,目錄結構如下:
有一個主包pro_flask,然後下面有兩個子包admin和web,還有和pro_flask同級的啟動檔案
我在與admin和web同級的__init__.py
檔案中,匯入admin和web裡的一些資源。
程式碼如下:
在匯入admin和web中的資源時,告訴我ModuleNotFoundError: No module named 'admin'
from flask import Flask # 以下 import的admin和web,是admin和web包下__init__.py中定義的物件 from admin import admin # 專案啟動後,這裡會報錯 from web import web # 專案啟動後,這裡會報錯
admin包下的__init__.py檔案
from flask import Blueprint admin = Blueprint( # 需要在其他模組中匯入這個 admin 藍圖物件 'admin', __name__, template_folder='templates', static_folder='static' ) from . import views
web包下的__init__.py檔案
from flask import Blueprint web = Blueprint( # 需要在其他模組中匯入這個 web 藍圖物件 'web', __name__, template_folder='templates', static_folder='static' ) from . import views
參考的網上大佬的筆記
import tkinter
(1)參照包
import引入的是包中根目錄下__init__.py
中的全部內容,包括其中的類、類內部的公有屬性、類內部的公有方法、方法等內容.(該種方式匯入包的本質就是執行__init__.py
檔案)
(2)參照模組
(該種方式匯入模組的本質是將模組解釋執行一遍,並賦值給tkinter: module_name = “module_name.py all code”)
===> import module_name —> module_name.py —> module_name.py的位置 —> sys.path(本質是一個列表)
(1)參照包
(from … import …引入的是在包中根目錄下__init__.py
和某個檔案的內容)但是,我們知道,匯入包是沒有意義的,最終的目的是匯入包下面的模組。(該種方式匯入包)
(2)參照模組
(該種方式當如模組的本質是講module_name.py檔案掰開,把想要的部分放入當前檔案執行一遍。)
看了網上大佬的分析以及解決方案,自己分析下
一般情況下,python會把一些預設的包目錄和使用者自定義包所在的目錄載入到python的搜尋模組的路徑集中(sys.path,是一個list列表),然後使用者在進行導包時,python會去搜尋的模組路徑集中去尋找,所匯入包的所在目錄是否在這個搜尋的模組路徑集中,如果不存在,那麼就會丟擲異常找不到模組。
程式碼分析:啟動類中,我們列印一下python搜尋的模組路徑集
from pro_flask import app import sys print(sys.path) if __name__ == '__main__': app.run() ------------------------------------------------------- ['D:\environment\python-workspace\flaskProject', 'D:\environment\python\DLLs', 'D:\environment\python\lib', 'D:\environment\python', 'D:\environment\python-workspace\flaskProject\venv', ........]
注意列表中這個'D:\environment\python-workspace\flaskProject'
,就是上面截圖中專案所在的路徑。
結論:也就是說,這個專案所在目錄被載入到了python的搜尋模組路徑集中,所有匯入包的操作都必須要從專案的目錄開始找,否則就會出問題
匯入模組時,從專案的根目錄找起
from flask import Flask from pro_flask.admin import admin # 從專案根目錄下找起就可以 from pro_flask.web import web
匯入時,使用 . 表示從當前檔案所在目錄找
from flask import Flask from . admin import admin # 從當前檔案所在目錄下開始找 from . web import web
同理,如果從上級目錄開始找,那麼可以用
from .. xxx import xxx
到此這篇關於Python from import導包ModuleNotFoundError No module named找不到模組問題解決的文章就介紹到這了,更多相關Python from import導包找不到模組內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45