91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用代碼實現Python動態加載依賴

發布時間:2021-12-27 17:10:01 來源:億速云 閱讀:224 作者:柒染 欄目:開發技術

今天就跟大家聊聊有關如何用代碼實現Python動態加載依賴,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

前幾天在一個開源項目里遇到好多用戶反饋,不會安裝依賴,或者執行 pip install -r requirements.txt 沒有反應。

可能造成的原因有很多種,一一排查起來也很麻煩。

想一勞永逸解決這個問題,一般大家都是到 site-packages 里面把所需要的包導出來,放到項目根目錄。

但這樣終究太過粗糙,不符合Python優雅的個性。

所以我就想,能不能動態引入包,如果沒有的話,再調用 pip 下載。最后也差不多實現了我的設想。

我推薦是使用 快速開始 - 注入代碼運行 中的方式

快速開始

跪求star GitHub - louisyoungx/dypend

通過 pip 安裝運行

在 PyPI 下載 dypend依賴包

pip install dypend

在本地生成 requirements.txt 依賴文件

pip freeze > requirements.txt

在項目的入口文件的最上層引入 dypend ,不用更改任何其他代碼

import dypend

這時 dypend會檢查你的Python環境中是否都有 requirements.txt 中的包,如果沒有, dypend會調用 pip下載。

注入代碼運行

在本地生成 requirements.txt 依賴文件

pip freeze > requirements.txt

在項目的入口文件的最上層添加如下代碼,不用更改任何其他代碼

import os
import re
REQUIREMENTS = os.getcwd() + '/requirements.txt'
def getDepends():
   requirements = open(REQUIREMENTS, 'r')
   libs = requirements.readlines()
   libList = []
   for lib in libs:
       try:
           name = re.search("^.+(?===)", lib).group(0)
           version = re.search("(?<===).+$", lib).group(0)
           libDict = {
               "name": name,
               "version": version
          }
           libList.append(libDict)
       except:
           continue
   return libList
def importLib():
   """Load python dependent libraries dynamically"""

   libList = getDepends()

   from pip._internal import main as pip_main
   import importlib

   def install(package):
       pip_main(['install', package])

   createVar = locals()

   for lib in libList:
       print(lib)
       try:
           createVar[lib["name"]] = importlib.import_module(lib["name"])
       except Exception as e:
           try:
               install(f'{lib["name"]}=={lib["version"]}')
               createVar[lib["name"]] = importlib.import_module(lib["name"])
           except Exception as e:
               print(e)
importLib()

這時dypend會檢查你的Python環境中是否都有 requirements.txt 中的包,如果沒有,dypend會自動下載。

看完上述內容,你們對如何用代碼實現Python動態加載依賴有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浦县| 延川县| 连江县| 来安县| 拉孜县| 达拉特旗| 东宁县| 安阳市| 独山县| 衡山县| 永兴县| 鸡西市| 扎囊县| 宜黄县| 新源县| 长沙市| 星座| 平远县| 锡林浩特市| 武鸣县| 永川市| 平塘县| 凤山县| 丹江口市| 无棣县| 栖霞市| 扎鲁特旗| 张家川| 灵石县| 吐鲁番市| 娱乐| 德州市| 三江| 万山特区| 乐平市| 绥德县| 连云港市| 沙雅县| 靖江市| 乌苏市| 文水县|