日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python导包路径问题_python的导包问题

發布時間:2023/12/4 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python导包路径问题_python的导包问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有事會遇到在python代碼中導入包錯誤問題,本文簡單對python包的引入做簡單介紹

簡單說,我認為python導包一共有3種情況,分別是:

要導的包與當前文件在同一層

要導的包在當前文件的底層(就是與當前文件夾同級的文件夾里)

要導的包在當前文件的上層

1、要導的包與當前文件在同一層

use.py

source.py

use.py表示包的調用方,source.py則是被調用方(下面的幾種情況同)

這種情況下直接from 文件名 import 函數/類/變量 就行了

如 from source import Source

運行use.py 會成功輸出success

要導的包在當前文件的底層

新建一個wrap文件夾,把source.py放進去

這時use.py導入source.py應該是

from wrap.source import Source

如果里面有多層結構,多用幾個點就能解決了

要導的包在當前文件的上層

這種情況是最復雜的一種,我們把上面那種情況的source.py和wrap.py換個位置

現在use.py在wrap文件夾里面了,而source.py跑到wrap文件夾外面了

現在use.py要調用source.py應該怎么樣調用呢

這時候就需要把文件根目錄放入,python包的搜索路徑里面。

大家想一想我們調用pip下來的包或者模塊的時候,從來都不需要指定什么路徑吧,直接使用包名或者模塊名就能使用了,比如 import os。

這正是因為pip下來的包或模塊所在的文件夾處于python默認的搜索路徑里面。py文件import文件的時候,先在當前目錄找,找不到就去python的搜索路徑里找,因此我們只需要把當前工程的根目錄放入python的搜索路徑就可以了。

具體操作如下:

在導入我們想導入的包之前,把當前項目的根目錄放入python的搜索路徑種,這樣就能成功導入了。

os.path.dirname(file)

這句的代碼的意思是:獲取當前文件所在目錄的相對路徑,當前文件所在文件夾的相對路徑就是 **.**了。

os.path.abspath(os.path.dirname(file))

這句代碼的意思是把上面獲取的相對路徑變成絕對路徑,我這里是D:\test\wrap,也就是use.py所在文件夾的絕對路徑。

os.path.dirname( os.path.abspath(os.path.dirname(file)))

這句代碼的意思是獲取上面所得到的路徑的上一級路徑,我這里就得到了D:\test,這個也是我的項目的根路徑。

sys.path.insert(0,BASE_DIR)

這句代碼表示把BASE_DIR寫入到python搜索路徑里。

以上寫法并非固定,大家根據自己的文件夾結構來寫

這樣我的D:\test這個路徑就加入到python搜索路徑中了。

現在我導入Source,只需要這樣寫 from source import Source,因為source在D:\test目錄下,所以能搜索到,同理D:\test的子文件夾里的文件導入方式就可以寫出 from wrap.source import Source,注意從插入的根路徑開始寫路徑就行了

總結

以上是生活随笔為你收集整理的python导包路径问题_python的导包问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。