python?import模塊時(shí)有錯(cuò)誤紅線(xiàn)的原因
import模塊時(shí)有錯(cuò)誤紅線(xiàn)的解決
前情提要
概念:
在一個(gè)文件中代碼越長(zhǎng)越不容易維護(hù),為了編寫(xiě)可維護(hù)的代碼,我們把很多函數(shù)分組,分別放到不同的文件里,這樣每個(gè)文件包含的代碼就相對(duì)較少,很多編程語(yǔ)言都采用這種組織代碼的方式。在python中,一個(gè)py文件就稱(chēng)之為一個(gè)模塊(Module)
好處:
1、最大的好處是提高了代碼的可維護(hù)性
2、編寫(xiě)代碼不必從零開(kāi)始。當(dāng)一個(gè)模塊編寫(xiě)完畢,就可以在其他地方調(diào)用
分類(lèi):
1、python’標(biāo)準(zhǔn)庫(kù) 2、第三方模塊 3、應(yīng)用程序自定義
使用軟件為pycharm。在python項(xiàng)目執(zhí)行的時(shí)候,會(huì)出現(xiàn)導(dǎo)入模塊錯(cuò)誤(代碼上表示出紅色曲線(xiàn))
原因及解決辦法
1、常見(jiàn)的為本模塊沒(méi)有安裝,所以要去網(wǎng)上搜索該模塊的安裝方法。(很多可以通過(guò)pip解決)
2、若該模塊為自己編寫(xiě),則需看他是否跟執(zhí)行文件是否在一個(gè)文件夾下。
例1:
bin.py是執(zhí)行文件,想在bin.py中導(dǎo)入cal.py運(yùn)行它中的run()函數(shù)。
如果只寫(xiě)import會(huì)報(bào)錯(cuò),因?yàn)閮蓚€(gè)文件存在于兩個(gè)文件夾中
所以這種情況在導(dǎo)入模塊的時(shí)候要寫(xiě)成from 文件夾名 import 文件名
即from module1 import cal
例2:
bin.py是執(zhí)行文件,想在bin.py中導(dǎo)入main.py,在main中再導(dǎo)入cal.py運(yùn)行cal.py的run()函數(shù)。簡(jiǎn)單點(diǎn)說(shuō)就是在1中調(diào)用2在從2中調(diào)用3
這時(shí),bin中的代碼是:
注:這樣導(dǎo)入的是正確的,但是有的時(shí)候pycharm也會(huì)給它標(biāo)紅線(xiàn)如下圖。直接執(zhí)行就好不用管(除非你導(dǎo)入本身有問(wèn)題)
from module1 import main main.run()
main中的代碼是:
import cal def run(): print(cal.add(3,7)) print('這里是main')
cal中的代碼是:
def add(a,b): print('這里是cal,%d+%d=%d'%(a,b,a+b))
注意:
這樣執(zhí)行是有錯(cuò)誤的:
Traceback (most recent call last):
File "E:/python_workspace/test/bin.py", line 1, in <module>
from module1 import main
File "E:\python_workspace\test\module1\main.py", line 1, in <module>
import cal
ModuleNotFoundError: No module named 'cal'
這時(shí),我們要格外注意,在main中導(dǎo)入cal模塊時(shí)寫(xiě)的是import cal。這樣是錯(cuò)誤的。
原因及解決:
我們的執(zhí)行文件是bin那么在執(zhí)行的的時(shí)候所有的導(dǎo)入路徑都是基于執(zhí)行文件的。所以盡管bin和main在同一文件夾下,依然要寫(xiě)成from module import cal。(改完你會(huì)發(fā)現(xiàn)以下現(xiàn)象,不用管,這是軟件問(wèn)題,保證導(dǎo)入路徑?jīng)]錯(cuò)就可以執(zhí)行)
import紅線(xiàn)但是能運(yùn)行
解決方法
包右鍵-Mark Directory as-Sources Root
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- python中的import語(yǔ)句用法大全
- 詳解Python中的from..import絕對(duì)導(dǎo)入語(yǔ)句
- Python 完美解決 Import “模塊“ could not be resolved ...的問(wèn)題
- Python?from?import導(dǎo)包ModuleNotFoundError?No?module?named找不到模塊問(wèn)題解決
- python中關(guān)于py文件之間相互import的問(wèn)題及解決方法
- Python import自己的模塊報(bào)錯(cuò)問(wèn)題及解決
- Python中import語(yǔ)句用法案例講解
相關(guān)文章
Python?Apschedule定時(shí)任務(wù)框架的用法詳解
apschedule是一個(gè)用python寫(xiě)的定時(shí)處理框架,這篇文章主要為大家詳細(xì)介紹了Apschedule定時(shí)任務(wù)框架的用法,感興趣的小伙伴可以跟隨小編一起了解一下2023-06-06python selenium 查找隱藏元素 自動(dòng)播放視頻功能
這篇文章主要介紹了python selenium 查找隱藏元素 自動(dòng)播放視頻功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07關(guān)于python3.9安裝wordcloud出錯(cuò)的問(wèn)題及解決辦法
這篇文章主要介紹了關(guān)于python3.9安裝wordcloud出錯(cuò)的問(wèn)題及解決辦法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11Python實(shí)現(xiàn)的破解字符串找茬游戲算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的破解字符串找茬游戲算法,簡(jiǎn)單分析了找茬游戲的原理,并結(jié)合具體實(shí)例形式分析了Python實(shí)現(xiàn)破解找茬游戲的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09Python?Asyncio中Coroutines,Tasks,Future可等待對(duì)象的關(guān)系及作用
這篇文章主要介紹了Python?Asyncio中Coroutines,Tasks,Future可等待對(duì)象的關(guān)系及作用,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,需要的小伙伴可以參考一下2022-06-06django rest framework 過(guò)濾時(shí)間操作
這篇文章主要介紹了django rest framework 過(guò)濾時(shí)間操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07