網站首頁 編程語言 正文
import模塊時有錯誤紅線的解決
?
前情提要
概念:
在一個文件中代碼越長越不容易維護,為了編寫可維護的代碼,我們把很多函數分組,分別放到不同的文件里,這樣每個文件包含的代碼就相對較少,很多編程語言都采用這種組織代碼的方式。在python中,一個py文件就稱之為一個模塊(Module)
好處:
1、最大的好處是提高了代碼的可維護性
2、編寫代碼不必從零開始。當一個模塊編寫完畢,就可以在其他地方調用
分類:
1、python’標準庫 2、第三方模塊 3、應用程序自定義
使用軟件為pycharm。在python項目執行的時候,會出現導入模塊錯誤(代碼上表示出紅色曲線)
原因及解決辦法
1、常見的為本模塊沒有安裝,所以要去網上搜索該模塊的安裝方法。(很多可以通過pip解決)
2、若該模塊為自己編寫,則需看他是否跟執行文件是否在一個文件夾下。
例1:
bin.py是執行文件,想在bin.py中導入cal.py運行它中的run()函數。
如果只寫import會報錯,因為兩個文件存在于兩個文件夾中
所以這種情況在導入模塊的時候要寫成from 文件夾名 import 文件名
即from module1 import cal
例2:
bin.py是執行文件,想在bin.py中導入main.py,在main中再導入cal.py運行cal.py的run()函數。簡單點說就是在1中調用2在從2中調用3
這時,bin中的代碼是:
注:這樣導入的是正確的,但是有的時候pycharm也會給它標紅線如下圖。直接執行就好不用管(除非你導入本身有問題)
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))
注意:
這樣執行是有錯誤的:
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中導入cal模塊時寫的是import cal。這樣是錯誤的。
原因及解決:
我們的執行文件是bin那么在執行的的時候所有的導入路徑都是基于執行文件的。所以盡管bin和main在同一文件夾下,依然要寫成from module import cal。(改完你會發現以下現象,不用管,這是軟件問題,保證導入路徑沒錯就可以執行)
import紅線但是能運行
解決方法
包右鍵-Mark Directory as-Sources Root?
原文鏈接:https://blog.csdn.net/weixin_44017891/article/details/104750752
相關推薦
- 2022-10-20 利用Python的tkinter模塊實現界面化的批量修改文件名_python
- 2022-03-23 C語言新手初階教程之三子棋實現_C 語言
- 2022-03-17 .NET?Core使用C#掃描并讀取圖片中的文字_C#教程
- 2022-07-09 Python小技巧練習分享_python
- 2022-06-07 教你使用.NET快速比較兩個byte數組是否相等_實用技巧
- 2022-09-25 Linux基礎組件之基于循環數組的無鎖隊列
- 2023-02-25 C++中vector迭代器失效與深淺拷貝問題詳析_C 語言
- 2022-01-31 nginx中的超時設置,請求超時、響應等待超時等
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支