python?import模塊時有錯誤紅線的原因
import模塊時有錯誤紅線的解決
前情提要
概念:
在一個文件中代碼越長越不容易維護(hù),為了編寫可維護(hù)的代碼,我們把很多函數(shù)分組,分別放到不同的文件里,這樣每個文件包含的代碼就相對較少,很多編程語言都采用這種組織代碼的方式。在python中,一個py文件就稱之為一個模塊(Module)
好處:
1、最大的好處是提高了代碼的可維護(hù)性
2、編寫代碼不必從零開始。當(dāng)一個模塊編寫完畢,就可以在其他地方調(diào)用
分類:
1、python’標(biāo)準(zhǔn)庫 2、第三方模塊 3、應(yīng)用程序自定義
使用軟件為pycharm。在python項目執(zhí)行的時候,會出現(xiàn)導(dǎo)入模塊錯誤(代碼上表示出紅色曲線)
原因及解決辦法
1、常見的為本模塊沒有安裝,所以要去網(wǎng)上搜索該模塊的安裝方法。(很多可以通過pip解決)
2、若該模塊為自己編寫,則需看他是否跟執(zhí)行文件是否在一個文件夾下。
例1:
bin.py是執(zhí)行文件,想在bin.py中導(dǎo)入cal.py運行它中的run()函數(shù)。
如果只寫import會報錯,因為兩個文件存在于兩個文件夾中
所以這種情況在導(dǎo)入模塊的時候要寫成from 文件夾名 import 文件名
即from module1 import cal
例2:
bin.py是執(zhí)行文件,想在bin.py中導(dǎo)入main.py,在main中再導(dǎo)入cal.py運行cal.py的run()函數(shù)。簡單點說就是在1中調(diào)用2在從2中調(diào)用3
這時,bin中的代碼是:
注:這樣導(dǎo)入的是正確的,但是有的時候pycharm也會給它標(biāo)紅線如下圖。直接執(zhí)行就好不用管(除非你導(dǎo)入本身有問題)
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í)行是有錯誤的:
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'
這時,我們要格外注意,在main中導(dǎo)入cal模塊時寫的是import cal。這樣是錯誤的。
原因及解決:
我們的執(zhí)行文件是bin那么在執(zhí)行的的時候所有的導(dǎo)入路徑都是基于執(zhí)行文件的。所以盡管bin和main在同一文件夾下,依然要寫成from module import cal。(改完你會發(fā)現(xiàn)以下現(xiàn)象,不用管,這是軟件問題,保證導(dǎo)入路徑?jīng)]錯就可以執(zhí)行)
import紅線但是能運行
解決方法
包右鍵-Mark Directory as-Sources Root
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python?Apschedule定時任務(wù)框架的用法詳解
apschedule是一個用python寫的定時處理框架,這篇文章主要為大家詳細(xì)介紹了Apschedule定時任務(wù)框架的用法,感興趣的小伙伴可以跟隨小編一起了解一下2023-06-06python selenium 查找隱藏元素 自動播放視頻功能
這篇文章主要介紹了python selenium 查找隱藏元素 自動播放視頻功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07關(guān)于python3.9安裝wordcloud出錯的問題及解決辦法
這篇文章主要介紹了關(guān)于python3.9安裝wordcloud出錯的問題及解決辦法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11Python?Asyncio中Coroutines,Tasks,Future可等待對象的關(guān)系及作用
這篇文章主要介紹了Python?Asyncio中Coroutines,Tasks,Future可等待對象的關(guān)系及作用,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,需要的小伙伴可以參考一下2022-06-06