最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python導(dǎo)入其他路徑下的文件報(bào)錯(cuò)的問題及解決

 更新時(shí)間:2026年01月21日 09:02:13   作者:g11023225  
文章主要討論了Python模塊導(dǎo)入的路徑問題,并提供了幾種解決方案,包括使用絕對(duì)路徑和修改sys.path等,通過這些方法,可以解決在導(dǎo)入模塊時(shí)出現(xiàn)的ModuleNotFoundError問題,特別是在使用打包工具如pyinstaller時(shí)

1. 代碼結(jié)構(gòu)

如下兩圖所示,當(dāng)前代碼文件分別有三個(gè):

test.py dir_a.py dir_b.py,其中主代碼為test.py,該文件在主目錄test文件夾下,dir_a.py dir_b.py在和test.py同級(jí)的DIR文件夾下。

其中test.py導(dǎo)入了DIR文件夾中的dir_a.py文件,而dir_a.py文件導(dǎo)入了同目錄下的dir_b.py文件。

2. 錯(cuò)誤的示例

2.1 我一開始的導(dǎo)入代碼如下

test.py的導(dǎo)入代碼部分:

# test.py
from DIR import dir_a

dir_a.py文件導(dǎo)入dir_b.py的代碼部分:

# dir_a.py
import dir_b

這樣的結(jié)果是,運(yùn)行dir_a.py文件是沒問題的,但是運(yùn)行test.py時(shí)就會(huì)報(bào)錯(cuò):ModuleNotFoundError: No module named 'dir_b',應(yīng)該是找不到 dir_b.py文件。

其實(shí)這就是使用相對(duì)路徑導(dǎo)入模塊產(chǎn)生的問題,把相對(duì)路徑改為絕對(duì)路徑就行了。

注意絕對(duì)路徑一定是要從當(dāng)前環(huán)境的跟目錄開始! 或者可以把dir_a.py dir_b.py文件所在的絕對(duì)路徑添加到sys.path中。

2.2 將路徑添加到sys.path中(打包不成功)

我在網(wǎng)絡(luò)上查了好久,產(chǎn)生上面的問題是當(dāng)前sys.path中缺少了DIR文件夾路徑的問題,可以給添上,將test.py的導(dǎo)入代碼部分修改為如下:

# test.py
import sys
sys.path.append('DIR')
from DIR import dir_a

修改完之后確實(shí)不會(huì)報(bào)錯(cuò)了,但是使用pyinstallerNuitka打包后,一樣還是會(huì)報(bào)錯(cuò),如下圖,錯(cuò)誤原因還是找你到dir_b

錯(cuò)誤原因分析:

之所以打包后會(huì)出現(xiàn)錯(cuò)誤,經(jīng)過我的實(shí)驗(yàn)發(fā)現(xiàn),pyinstaller沒有把dir_b.py文件給打包進(jìn)去,不知道為啥會(huì)出現(xiàn)這種情況,有知道的可以評(píng)論告訴我下。

2.3 使用絕對(duì)路徑

網(wǎng)絡(luò)上有另一種方案就是只修改dir_a.py文件中的內(nèi)容,修改后的dir_a.py中的導(dǎo)入部分代碼:

# dir_a.py
if __package__ is None or __package__ == '':
    # uses current directory visibility
    import dir_b
else:
    # uses current package visibility
    from . import dir_b

這樣再運(yùn)行代碼dir_a.py test.py都不會(huì)有問題,而且打包后也不會(huì)報(bào)錯(cuò)。但是這樣代碼太臃腫了,建議使用2.4的方案

2.4 終極解決方案

只修改dir_a.py文件中引入模塊的部分,修改為:

# dir_a.py
from DIR import dir_b

這樣再運(yùn)行代碼dir_a.py test.py都不會(huì)有問題。

注意:

其實(shí)這里有一個(gè)很重要的點(diǎn),就是絕對(duì)路徑一定要從當(dāng)前環(huán)境的根目錄開始算。上面的寫法默認(rèn)test文件夾就是當(dāng)前環(huán)境的根目錄,這樣的話是沒問題的。但是假如test文件夾的上一級(jí)文件夾MyProj才是編譯環(huán)境的根目錄時(shí)(如下圖),運(yùn)行test.py不會(huì)報(bào)錯(cuò),但是運(yùn)行dir_a.py是會(huì)報(bào)錯(cuò)的。

這時(shí)候dir_a.py文件中就應(yīng)該這樣改:from test.DIR import dir_b

總結(jié)

代碼書寫時(shí)最好是代碼都在一個(gè)目錄下,這樣就不會(huì)出現(xiàn)上面的問題了。如果必須要用的話,一定要注意模塊導(dǎo)入問題,修改成本文提出的方式。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于python中theano庫的線性回歸

    基于python中theano庫的線性回歸

    這篇文章主要為大家詳細(xì)介紹了基于python中theano庫的線性回歸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Flask創(chuàng)建并運(yùn)行數(shù)據(jù)庫遷移的實(shí)現(xiàn)過程

    Flask創(chuàng)建并運(yùn)行數(shù)據(jù)庫遷移的實(shí)現(xiàn)過程

    Flask創(chuàng)建并運(yùn)行數(shù)據(jù)庫遷移的過程是一個(gè)涉及多個(gè)步驟的操作,旨在幫助開發(fā)者在開發(fā)過程中管理數(shù)據(jù)庫模式的變化,而不需要手動(dòng)地刪除和重建數(shù)據(jù)庫表,從而避免數(shù)據(jù)丟失,以下是一個(gè)詳細(xì)的步驟說明,需要的朋友可以參考下
    2024-09-09
  • 如何用Python來理一理紅樓夢(mèng)里的那些關(guān)系

    如何用Python來理一理紅樓夢(mèng)里的那些關(guān)系

    這篇文章主要介紹了用Python來理一理紅樓夢(mèng)里的那些關(guān)系代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python使用Selenium實(shí)現(xiàn)模擬登錄的示例代碼

    Python使用Selenium實(shí)現(xiàn)模擬登錄的示例代碼

    Selenium(本文基于python3.8)是一個(gè)功能強(qiáng)大的自動(dòng)化測(cè)試工具,它可以用于模擬用戶在瀏覽器中的行為,比如點(diǎn)擊、輸入、滾動(dòng)等等,本教程將詳細(xì)介紹如何使用Python編寫一個(gè)模擬登錄地爬蟲,使用XPath等多種元素匹配方法,需要的朋友可以參考下
    2023-08-08
  • python判斷字符串是否是json格式方法分享

    python判斷字符串是否是json格式方法分享

    這篇文章主要介紹了python判斷字符串是否是json格式方法分享,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • python實(shí)現(xiàn)同級(jí)目錄調(diào)用的示例詳解

    python實(shí)現(xiàn)同級(jí)目錄調(diào)用的示例詳解

    同級(jí)目錄指的是位于同一級(jí)別的文件夾,這些文件夾具有相同的層級(jí)結(jié)構(gòu),它們相互平行,沒有一個(gè)被包含在另一個(gè)之中,本文將給大家介紹python實(shí)現(xiàn)同級(jí)目錄調(diào)用的示例,需要的朋友可以參考下
    2024-06-06
  • Python OS模塊實(shí)例詳解

    Python OS模塊實(shí)例詳解

    這篇文章主要介紹了Python OS模塊,結(jié)合實(shí)例形式總結(jié)分析了Python使用OS解析文件路徑、判斷文件、目錄等相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • graphviz 最新安裝教程適用初學(xué)者

    graphviz 最新安裝教程適用初學(xué)者

    Graphviz 是一個(gè)自動(dòng)排版的作圖軟件,可以生成 png pdf 等格式,這篇文章主要介紹了graphviz 2022最新安裝教程適用初學(xué)者,需要的朋友可以參考下
    2023-02-02
  • 詳細(xì)總結(jié)Python類的多繼承知識(shí)

    詳細(xì)總結(jié)Python類的多繼承知識(shí)

    Python類的多繼承知識(shí)是非常易于新手理解的,如果你是剛剛?cè)腴TPython的話,歡迎參考本篇文章,本文對(duì)Python類的多繼承知識(shí)作出了非常詳細(xì)的解釋,還有相關(guān)代碼參考哦。
    2021-05-05
  • 10行Python代碼計(jì)算汽車數(shù)量的實(shí)現(xiàn)方法

    10行Python代碼計(jì)算汽車數(shù)量的實(shí)現(xiàn)方法

    這篇文章主要介紹了10行Python代碼計(jì)算汽車數(shù)量的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評(píng)論

富民县| 电白县| 蒙自县| 修文县| 若羌县| 浮山县| 罗甸县| 贞丰县| 绥中县| 北碚区| 丰都县| 图片| 米脂县| 内江市| 麦盖提县| 获嘉县| 和静县| 苍南县| 内江市| 嵊州市| 温宿县| 始兴县| 昌都县| 东阿县| 保靖县| 通江县| 辉南县| 仙桃市| 南漳县| 栖霞市| 调兵山市| 那坡县| 洛扎县| 洛南县| 武功县| 宣恩县| 广宁县| 祁东县| 辉县市| 宝丰县| 稷山县|