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

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

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

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

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

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

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

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

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

雖然想打成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會調用 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會自動下載。

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

相關文章

  • Python GUI之tkinter窗口視窗教程大集合(推薦)

    Python GUI之tkinter窗口視窗教程大集合(推薦)

    這篇文章主要介紹了Python GUI之tkinter窗口視窗教程大集合,看這一篇教程足了,本文通過圖文實例相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Python線程threading(Thread類)

    Python線程threading(Thread類)

    這篇文章主要介紹了Python線程threading(Thread類),線程是進程的組成部分,一個進程可以擁有多個線程,更多詳細內容需要的朋友可以參考一下下面文章詳細內容
    2022-07-07
  • Keras SGD 隨機梯度下降優(yōu)化器參數設置方式

    Keras SGD 隨機梯度下降優(yōu)化器參數設置方式

    這篇文章主要介紹了Keras SGD 隨機梯度下降優(yōu)化器參數設置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python3 寫一個WAV音頻文件播放器的代碼

    python3 寫一個WAV音頻文件播放器的代碼

    本文通過實例代碼給大家介紹了python3 寫一個WAV音頻文件播放器,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • django實現悲觀鎖樂觀鎖的項目實踐

    django實現悲觀鎖樂觀鎖的項目實踐

    在Django中,我們可以通過實現悲觀鎖和樂觀鎖來保證數據的安全性,本文就來介紹一下django實現悲觀鎖樂觀鎖的項目實踐,感興趣的可以了解一下
    2023-08-08
  • python實現圖片九宮格分割

    python實現圖片九宮格分割

    一張圖片分成的九宮圖,大家知道是怎么做到嗎?這篇文章就為大家詳細介紹了python實現圖片九宮格分割功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • python數據分析之將爬取的數據保存為csv格式

    python數據分析之將爬取的數據保存為csv格式

    Python內置了CSV模塊,可直接通過該模塊實現csv文件的讀寫操作,在web應用中導出數據是比較常見操作,下面這篇文章主要給大家介紹了關于python數據分析之將爬取的數據保存為csv格式的相關資料,需要的朋友可以參考下
    2022-06-06
  • python輕松辦公將100個Excel中符合條件的數據匯總到1個Excel里

    python輕松辦公將100個Excel中符合條件的數據匯總到1個Excel里

    這篇文章主要為大家介紹了python輕松辦公將100個Excel中符合條件的數據匯總到1個Excel里示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • python簡單利用字典破解zip文件口令

    python簡單利用字典破解zip文件口令

    這篇文章主要給大家介紹了關于python簡單利用字典破解zip文件口令的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Python入門教程(七)Python數字類型

    Python入門教程(七)Python數字類型

    這篇文章主要介紹了Python入門教程(七)Python數字類型,Python是一門非常強大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04

最新評論