python之ImportError:模塊引入異常問題
摘要
為什么要寫這篇文章?
我們在使用 pycharm 編程經(jīng)常會(huì)遇到 ImportError:模塊引入異常的情況;
原因:
模塊文件不在運(yùn)行的路徑上,即PyCharm IDE支持文件跳轉(zhuǎn),但是當(dāng)文件執(zhí)行時(shí),找不到模塊。
就會(huì)拋出 ImportError;
解決方法
Step1:使用 sys.path.append 引入源路徑
如果是在 Terminal 執(zhí)行,通過 sys.path.append 添加源路徑
在模塊文件頂部,引入源目錄,源路徑下的所有模塊文件都可以被不加前綴直接import
import os import sys BASE_PATH = os.path.split(os.path.dirname(os.path.abspath(__file__)))[0] if BASE_PATH not in sys.path: sys.path.append(BASE_PATH) # print(BASE_PATH) # 打印源路徑
Step2:Pycharm IDE - Sources Root
如果使用 Pycharm IDE ,模塊包下有多層目錄,直接執(zhí)行,可能就會(huì)拋出引入路徑錯(cuò)誤
(1)在pycharm中設(shè)置source路徑
File–>setting–>project:項(xiàng)目名–>project structure
將放package的文件夾設(shè)置為source,這樣import的模塊類等,就是通過這些source文件夾作為根路徑來查找,也就是在這些source文件夾中查找import的東西。
(2)清除緩存并重啟
(3)設(shè)置源目錄(注意設(shè)置的是哪個(gè)目錄,不能選擇項(xiàng)目根目錄)
package 右鍵 -> Mark Directory as -> Sources Root
Step 3:unresolved reference
導(dǎo)入第三方模塊時(shí),比如:
from flask import Flask
此時(shí)的Flask 下方是有紅色波浪線(如下圖)的,我這里確定已經(jīng)安裝完畢,且 ctrl + 左鍵也無法跳轉(zhuǎn)到聲明定義的源碼,雖然運(yùn)行是不會(huì)報(bào)錯(cuò)的,但是在使用的是不會(huì)提示相關(guān)的關(guān)鍵方法
這個(gè)問題困擾了我很久,查了很多資料,最終找到了解決方法;
(1)在pycharm的 settings >> Editor >> File Types
(2)選擇 Text 并將 File name patterns 列表(識別為文本的文件名/擴(kuò)展名列表),刪除 __init__.py
文件名
(3)刪除所有的文件名,發(fā)現(xiàn)問題已經(jīng)解決!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 關(guān)于Python ImportError: No module named 通用解決方法
- 解決ImportError:cannot import name ‘Flatten‘ from ‘torch.nn‘問題
- python解決報(bào)錯(cuò)ImportError: Bad git executable.問題
- 安裝pyhttpx解決ImportError: DLL load failed錯(cuò)誤
- 解決Numpy報(bào)錯(cuò):ImportError: numpy.core.multiarray failed
- 關(guān)于sklearn包導(dǎo)入錯(cuò)誤:ImportError:?cannot?import?name Type解決方案
- Python報(bào)錯(cuò)ImportError:?IProgress?not?found.?Please?update?jupyter?and?ipywidgets解決
- Python報(bào)錯(cuò)ImportError: No module named ‘missing_module‘的解決方法
- Python解決“ImportError:?Couldn‘t?import?Django”問題全攻略
相關(guān)文章
Python連接Postgres/Mysql/Mongo數(shù)據(jù)庫基本操作大全
在后端應(yīng)用開發(fā)中,經(jīng)常會(huì)用到Postgres/Mysql/Mongo這三種數(shù)據(jù)庫的基本操作,今天小編就給大家詳細(xì)介紹Python連接Postgres/Mysql/Mongo數(shù)據(jù)庫基本操作,感興趣的朋友一起看看吧2021-06-06Python使用struct處理二進(jìn)制(pack和unpack用法)
這篇文章主要介紹了Python使用struct處理二進(jìn)制(pack和unpack用法),幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-11-11Python 基礎(chǔ)之字符串string詳解及實(shí)例
這篇文章主要介紹了Python 字符串(string) 的相關(guān)資料,需要的朋友可以參考下2017-04-04Pandas實(shí)現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換的一些小技巧匯總
這篇文章主要給大家匯總介紹了關(guān)于Pandas實(shí)現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換的一些小技巧,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05python中g(shù)etattr函數(shù)使用方法 getattr實(shí)現(xiàn)工廠模式
這篇文章主要介紹了python中g(shù)etattr()這個(gè)函數(shù)的一些用法,大家參考使用吧2014-01-01Python深度學(xué)習(xí)之使用Albumentations對圖像做增強(qiáng)
諸如RandomCrop和CenterCrop之類的某些增強(qiáng)功能可能會(huì)變換圖像,使其不包含所有原始邊界框. 本示例說明如何使用名為RandomSizedBBoxSafeCrop的變換來裁剪圖像的一部分,但保留原始圖像的所有邊界框,需要的朋友可以參考下2021-05-05Python之lambda匿名函數(shù)及map和filter的用法
今天小編就為大家分享一篇關(guān)于Python之lambda匿名函數(shù)及map和filter的用法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03