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

一行代碼實現(xiàn)Python動態(tài)加載依賴

 更新時間:2021年12月26日 14:05:01   作者:louisyoungx  
本文主要介紹了Python動態(tài)加載依賴,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

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

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

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

所以我就想,能不能動態(tài)引入包,如果沒有的話,再調(diào)用 pip 下載。最后也差不多實現(xiàn)了我的設(shè)想。

我大概查了一下,現(xiàn)在好像沒有人用過這個方案,我自己使用感覺還是很方便的,分享給大家。

雖然想打成library給大家下載的,后來想到這又要依賴pip,違背了做動態(tài)依賴的本意
所以我推薦是使用 快速開始 - 注入代碼運行 中的方式

快速開始

跪求star GitHub - louisyoungx/dypend

通過 pip 安裝運行

在 PyPI 下載 dypend依賴包

pip install dypend

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

pip freeze > requirements.txt

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

import dypend

這時 dypend會檢查你的Python環(huán)境中是否都有 requirements.txt 中的包,如果沒有, dypend會調(diào)用 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環(huán)境中是否都有 requirements.txt 中的包,如果沒有,dypend會自動下載。

到此這篇關(guān)于一行代碼實現(xiàn)Python動態(tài)加載依賴的文章就介紹到這了,更多相關(guān)Python動態(tài)加載依賴內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python reduce函數(shù)作用及實例解析

    Python reduce函數(shù)作用及實例解析

    這篇文章主要介紹了Python reduce函數(shù)作用及實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • 詳解Python中的元組與邏輯運算符

    詳解Python中的元組與邏輯運算符

    這篇文章主要介紹了Python中的元組與邏輯運算符的用法,是Python入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10
  • Python魔術(shù)方法深入分析講解

    Python魔術(shù)方法深入分析講解

    所謂魔法函數(shù)(Magic Methods),是Python的?種?級語法,允許你在類中?定義函數(shù)(函數(shù)名格式?般為__xx__),并綁定到類的特殊?法中。?如在類A中?定義__str__()函數(shù),則在調(diào)?str(A())時,會?動調(diào)?__str__()函數(shù),并返回相應(yīng)的結(jié)果
    2023-02-02
  • Python字典中的鍵映射多個值的方法(列表或者集合)

    Python字典中的鍵映射多個值的方法(列表或者集合)

    今天小編就為大家分享一篇Python字典中的鍵映射多個值的方法(列表或者集合),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python實現(xiàn)Socket.IO的在線游戲場景方式

    Python實現(xiàn)Socket.IO的在線游戲場景方式

    本文介紹了Socket.IO的基本概念、應(yīng)用場景,并通過一個簡單的多人在線實時對戰(zhàn)游戲案例,展示了如何使用Python和Socket.IO庫實現(xiàn)實時通信,Socket.IO的核心是事件驅(qū)動模型,支持WebSocket協(xié)議,并在不支持的情況下回退到其他傳輸方式
    2025-01-01
  • Python實現(xiàn)Telnet自動連接檢測密碼的示例

    Python實現(xiàn)Telnet自動連接檢測密碼的示例

    這篇文章主要介紹了Python實現(xiàn)Telnet自動連接檢測密碼的示例,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-04-04
  • Python中的數(shù)據(jù)分組統(tǒng)計、分組運算及透視方式

    Python中的數(shù)據(jù)分組統(tǒng)計、分組運算及透視方式

    這篇文章主要介紹了Python中的數(shù)據(jù)分組統(tǒng)計、分組運算及透視方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • numpy稀疏矩陣的實現(xiàn)

    numpy稀疏矩陣的實現(xiàn)

    本文主要介紹了numpy稀疏矩陣的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Python supervisor強大的進程管理工具的使用

    Python supervisor強大的進程管理工具的使用

    這篇文章主要介紹了Python supervisor強大的進程管理工具的使用,本文主要跟大家分享在類unix操作系統(tǒng)下supervisor的使用以及一些關(guān)于進程的知識,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Django獲取前端數(shù)據(jù)的實現(xiàn)方式

    Django獲取前端數(shù)據(jù)的實現(xiàn)方式

    這篇文章主要介紹了Django獲取前端數(shù)據(jù)的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評論

合肥市| 怀安县| 正安县| 城固县| 六盘水市| 娱乐| 吉隆县| 台山市| 和林格尔县| 济宁市| 张家界市| 陆川县| 板桥市| 安阳县| 洛隆县| 鸡泽县| 建德市| 长葛市| 富民县| 钦州市| 富平县| 陇川县| 达日县| 达尔| 昌黎县| 佛学| 台东县| 博客| 札达县| 扶沟县| 双辽市| 泾源县| 盐亭县| 兰溪市| 报价| 凭祥市| 昌邑市| 紫阳县| 竹溪县| 剑阁县| 类乌齐县|