欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python?pip特殊用法之pip?install?-v?-e?.命令詳解

 更新時間:2022年09月08日 14:46:15   作者:活成自己的樣子啊  
這篇文章主要給大家介紹了關于python?pip特殊用法之pip?install?-v?-e?.命令的相關資料,文中通過圖文以及實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

前言

之前在使用包括大型文檔(商湯科技、百度飛漿)代碼的時候都一直使用 pip install -v -e . ,這一命令,但是一直不是很清楚它到底是”什么“。

  • 當修改完代碼文件的一些配置文件之后都要使用它,不然就會報錯!
  • 他出現(xiàn)在了商湯科技的使用文檔里面。

在學習商湯科技的mmdetection文檔時遇到:

 (1)安裝mmcv時,它使用了類似的 pip install -e .

(2)安裝mmdet的時候,他又使用了這個命令。

分析

在分析之前,我們要先來說一個知識點:什么是 命名空間軟件包 ?

當我們右鍵一個文件夾時,我們可以找到如下的一個選項:

命名空間軟件包是對相關的包或模塊進行分組的一種方法,通常是一個被忽略的功能,它對于在較大的項目中構建打包生態(tài)系統(tǒng)非常有用。

如果你的應用組件的開發(fā)、打包和版本化都是獨立的,但仍然希望從同一個命名空間訪問它們,那么命名空間包特別有用,它有利于明確每個包所屬的組織或項目。

為什么要講這個呢,因為在我們下載的代碼里面,有一個文件夾是命名空間軟件包:

關于 命名空間軟件包 的解讀我們先到這里,知道他是為了方便使用者可以自由修改的可以了。

自己也分析了有一段時間了,已經(jīng)有了理解,也就不和大家賣關子了,直接開始說結(jié)論:

首先,這個命令前面的pip install大家應該都熟悉,之后的-v -e .應該分成 -v ,-e , .  這三個部分來看。

  • -v:verbose, or more output.  (輸出更詳細的信息)
  • -e:  installing a project in editable mode.  (以可編輯的模式安裝項目)
  • . :  一個點,代表相對路徑,也就是當前路徑  (代表路徑)

注: 我自己翻譯的,勿噴~~~

首先,我把mmdetection的項目文件夾放到了lalala文件夾下面,cd進入文件夾,執(zhí)行 pip install -e . 命令:

之后,我來到lalala文件夾路徑下面,執(zhí)行 pip install -e .\mmdetection-master\ 命令:

 他們居然執(zhí)行了相同的操作?。。。ê冒?,我只是證明了那個點是個路徑而已~~~)

好了!接下來,我將把 pip install -e . 的全部執(zhí)行流程截圖:

注:這里我把所有庫都裝完了,所以他只是檢測了一遍,就過去了。

對于大家來說,看到了:

  • 他把 requirments.txt 里面的依賴裝了一遍。
  • 他把 mmdet 這個庫重新卸載又裝了一遍。<這個是命名空間軟件包>

對于我來說:

  • 他把 setup.py 執(zhí)行了一遍! (使用命令 python setup.py develop !)

注:至于 setup.py 是如何工作的,這又是一門學問~~~這里就不在詳細展開了【狗頭保命】,以后有時間可能會再寫一篇博客說說。 

對于好多小伙伴來說,都以為 -e . 是把當前文件夾下面的  命名空間軟件包 安裝到第三方庫里面,這是錯誤的,就比如說,我把 setup.py 刪了,他就會報錯:

這里我把 setup.py 刪了:

再運行 pip install -e . :

如果你還不服氣,覺得,這和  requirments.txt 有關系:(我再把 requirments.txt 刪了)

 注: 這里我不僅把 requirments.txt  刪了,還把 requirments文件夾 刪了。

如果你還不服氣,你說-e 直接指定mmdet就可以安裝這個命名空間軟件包到包管理器里面(第三方庫):(我改變執(zhí)行命令為 pip install -e mmdet

得了。。沒脾氣了。。 

結(jié)論

行了,也差不多可以得出結(jié)論了:

  • 命名空間軟件包: 這里指 mmdet 這個庫的可修改的體現(xiàn),就是如果是一個正常的第三方庫的話,他一般只是可讀模式,但是使用命名空間軟件包這個方式,可以實現(xiàn)對第三方庫進行修改。
  • 對于 命名空間軟件包 來說,他只當作一個標記,并不是 pip install -e . 的直接執(zhí)行對象。
  • pip install -e .的直接執(zhí)行對象是當前文件下面的 setup.py 。
  • setup.py 內(nèi)包含了執(zhí)行命令,也就是 安裝依賴 和將 命名空間軟件 重新安裝到包管理器中。

使用方法總結(jié):

  • 你在mmdet包下面修改的配置,其實并沒有直接加載到第三方庫里面,也就是修改完之后并沒有讓環(huán)境變成你修改完的樣子。
  • mmdetection里面導的mmdet是你anaconda里面的(也就是你的包管理器里面的)mmdet庫,不是你那個 mmdetection-master/mmdet 的文件夾。

第三方庫里面的 mmdet 和 mmdetection-master 對比:

mmdet 第三方庫:

 mmdetection-master 里面的mmdet包:

呦,,還挺相似啊~~~至少大差不差

后記

大家可能不大適應這種動態(tài)修改第三方庫的方法,但他設計出來就是為了方便我們修改第三方庫的,不要去拒絕,嘗試著去使用,耐心的去研究這里面的方法,會有不一樣的收獲!

到此這篇關于python pip特殊用法之pip install -v -e .命令詳解的文章就介紹到這了,更多相關pip install -v -e .命令詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論