python?import模塊時(shí)有錯(cuò)誤紅線的原因
import模塊時(shí)有錯(cuò)誤紅線的解決
前情提要
概念:
在一個(gè)文件中代碼越長(zhǎng)越不容易維護(hù),為了編寫可維護(hù)的代碼,我們把很多函數(shù)分組,分別放到不同的文件里,這樣每個(gè)文件包含的代碼就相對(duì)較少,很多編程語(yǔ)言都采用這種組織代碼的方式。在python中,一個(gè)py文件就稱之為一個(gè)模塊(Module)
好處:
1、最大的好處是提高了代碼的可維護(hù)性
2、編寫代碼不必從零開始。當(dāng)一個(gè)模塊編寫完畢,就可以在其他地方調(diào)用
分類:
1、python’標(biāo)準(zhǔn)庫(kù) 2、第三方模塊 3、應(yīng)用程序自定義
使用軟件為pycharm。在python項(xiàng)目執(zhí)行的時(shí)候,會(huì)出現(xiàn)導(dǎo)入模塊錯(cuò)誤(代碼上表示出紅色曲線)
原因及解決辦法
1、常見的為本模塊沒有安裝,所以要去網(wǎng)上搜索該模塊的安裝方法。(很多可以通過(guò)pip解決)
2、若該模塊為自己編寫,則需看他是否跟執(zhí)行文件是否在一個(gè)文件夾下。
例1:
bin.py是執(zhí)行文件,想在bin.py中導(dǎo)入cal.py運(yùn)行它中的run()函數(shù)。

如果只寫import會(huì)報(bào)錯(cuò),因?yàn)閮蓚€(gè)文件存在于兩個(gè)文件夾中

所以這種情況在導(dǎo)入模塊的時(shí)候要寫成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)紅線如下圖。直接執(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í)寫的是import cal。這樣是錯(cuò)誤的。
原因及解決:
我們的執(zhí)行文件是bin那么在執(zhí)行的的時(shí)候所有的導(dǎo)入路徑都是基于執(zhí)行文件的。所以盡管bin和main在同一文件夾下,依然要寫成from module import cal。(改完你會(huì)發(fā)現(xiàn)以下現(xiàn)象,不用管,這是軟件問(wèn)題,保證導(dǎo)入路徑?jīng)]錯(cuò)就可以執(zhí)行)

import紅線但是能運(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實(shí)現(xiàn)常見的4種坐標(biāo)互相轉(zhuǎn)換
主流被使用的地理坐標(biāo)系并不統(tǒng)一,常用的有WGS84、GCJ02(火星坐標(biāo)系)、BD09(百度坐標(biāo)系)以及百度地圖中保存矢量信息的web墨卡托,本文利用Python編寫相關(guān)類以實(shí)現(xiàn)4種坐標(biāo)系統(tǒng)之間的互相轉(zhuǎn)換,希望對(duì)大家有所幫助2023-02-02
使用python框架Scrapy爬取數(shù)據(jù)的操作步驟
Scrapy是一個(gè)基于Python的強(qiáng)大的開源網(wǎng)絡(luò)爬蟲框架,用于從網(wǎng)站上抓取信息,它提供了廣泛的功能,使得爬取和分析數(shù)據(jù)變得相對(duì)容易,本文小編將給給大家介紹一下如何使用python框架Scrapy爬取數(shù)據(jù),需要的朋友可以參考下2023-10-10
對(duì)Python3 * 和 ** 運(yùn)算符詳解
今天小編就為大家分享一篇對(duì)Python3 * 和 ** 運(yùn)算符詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
python下調(diào)用pytesseract識(shí)別某網(wǎng)站驗(yàn)證碼的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇python下調(diào)用pytesseract識(shí)別某網(wǎng)站驗(yàn)證碼的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
Python中canmatrix解析dbc文件應(yīng)用常見示例
DBC是一種用于描述CAN網(wǎng)絡(luò)協(xié)議的文件格式,Python作為一種流行的編程語(yǔ)言,也提供了解析DBC文件的相關(guān)類庫(kù),這篇文章主要給大家介紹了關(guān)于Python中canmatrix解析dbc文件的相關(guān)資料,需要的朋友可以參考下2024-08-08

