iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >一行代码实现Python动态加载依赖
  • 374
分享到

一行代码实现Python动态加载依赖

2024-04-02 19:04:59 374人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录快速开始通过 pip 安装运行 注入代码运行 前几天在一个开源项目里遇到好多用户反馈,不会安装依赖,或者执行 pip install -r requirements.txt 没有

前几天在一个开源项目里遇到好多用户反馈,不会安装依赖,或者执行 pip install -r requirements.txt 没有反应。

可能造成的原因有很多种,一一排查起来也很麻烦。

想一劳永逸解决这个问题,一般大家都是到 site-packages 里面把所需要的包导出来,放到项目根目录。

但这样终究太过粗糙,不符合python优雅的个性。

所以我就想,能不能动态引入包,如果没有的话,再调用 pip 下载。最后也差不多实现了我的设想。

我大概查了一下,现在好像没有人用过这个方案,我自己使用感觉还是很方便的,分享给大家。

虽然想打成library给大家下载的,后来想到这又要依赖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动态加载依赖的文章就介绍到这了,更多相关Python动态加载依赖内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 一行代码实现Python动态加载依赖

本文链接: https://www.lsjlt.com/news/160896.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 一行代码实现Python动态加载依赖
    目录快速开始通过 pip 安装运行 注入代码运行 前几天在一个开源项目里遇到好多用户反馈,不会安装依赖,或者执行 pip install -r requirements.txt 没有...
    99+
    2024-04-02
  • 如何用代码实现Python动态加载依赖
    今天就跟大家聊聊有关如何用代码实现Python动态加载依赖,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前几天在一个开源项目里遇到好多用户反馈,不会安装依赖,或者执行 pip ins...
    99+
    2023-06-22
  • AngularJS怎么通过ocLazyLoad实现动态懒加载模块和依赖
    这篇文章将为大家详细讲解有关AngularJS怎么通过ocLazyLoad实现动态懒加载模块和依赖,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现的过程主要是引用3个主...
    99+
    2024-04-02
  • 动态执行python代码
    最近刚刚学到两个新的命令exec和eval,这两个命令可以在代码中动态执行python脚本。 exec a = 1 exec "a = 2" print a 上述代码输出的结果为2 name = "os" exec "impor...
    99+
    2023-01-31
    代码 动态 python
  • Node.js CommonJS 规范进阶:动态加载和循环依赖性处理
    CommonJS 规范是一种模块化系统,用于在 Node.js 中组织和重用代码。它包括动态加载和循环依赖性处理机制,用于管理模块之间的交互。 动态加载 动态加载允许在运行时加载模块。它通过 require() 函数实现,该函数接受一个模...
    99+
    2024-03-11
    Node.js 中的 CommonJS 规范
  • 一行 Python 代码实现并行
    Python 在程序并行化方面多少有些声名狼藉。撇开技术上的问题,例如线程的实现和 GIL,我觉得错误的教学指导才是主要问题。常见的经典 Python 多线程、多进程教程多显得偏"重"。而且往往隔靴搔痒,没有深入探讨日常工作中最有用的内容。...
    99+
    2023-05-14
    Python
  • golang动态执行代码怎么实现
    在Go语言中,可以使用reflect包来实现动态执行代码。下面是一个简单的示例: package main import ( ...
    99+
    2023-10-26
    golang
  • java实现动态编译并动态加载
    在D盘test目录下有个java文件:AlTest.java public class AlTest { public String sayHello(){ System...
    99+
    2024-04-02
  • 动态加载js文件代码怎么写
    今天小编给大家分享一下动态加载js文件代码怎么写的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。具体代码如下:function...
    99+
    2023-07-04
  • 关于Java利用反射实现动态运行一行或多行代码
    Talk is cheap, show me the code! 先来看代码: public class TestEval { public static void main(St...
    99+
    2023-05-14
    Java反射 反射实现动态运行 动态运行代码
  • Python一行代码实现自动发邮件功能
    1. 用Python每天给女神发送舔狗问候 用Python自动发送最基本的邮件(主题+收件人) 知识点 邮件结构 以263企业邮为例 ...
    99+
    2024-04-02
  • Java怎么利用反射实现动态运行一行或多行代码
    这篇文章主要介绍“Java怎么利用反射实现动态运行一行或多行代码”,在日常操作中,相信很多人在Java怎么利用反射实现动态运行一行或多行代码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java怎么利用反射实...
    99+
    2023-07-05
  • Python实现一行代码自动绘制艺术画
    目录1.准备2.开始使用 Discoart3.显示/保存/加载配置DiscoArt 是一个很牛的开源模块,它能根据你给定的关键词自动绘画。 绘制过程是完全可见的,你可以在 jupyt...
    99+
    2022-12-30
    Python自动绘制艺术画 Python绘制艺术画 Python 艺术画
  • java动态代理实现代码
    目录1、代理模式2、动态代理3、原理研究4、应用5、总结1、代理模式 代理模式是常用的设计模式之一,也是开发中常见的设计模式。 简单的描述一下,代理模式就是将实现类隔离开,比如你想给...
    99+
    2024-04-02
  • MyBatis加载映射文件和动态代理的实现
    目录前言正文一. 映射文件/映射接口的配置二. 加载映射文件的源码分析三. MyBatis中的动态代理总结前言 本篇文章将分析MyBatis在配置文件加载的过程中,如何解析映射文件中...
    99+
    2023-05-19
    MyBatis加载映射文件 MyBatis动态代理
  • springboot动态加载类怎么实现
    要实现Spring Boot动态加载类,可以使用以下步骤: 创建一个ClassLoader对象,用于动态加载类。可以使用URLC...
    99+
    2023-10-25
    springboot
  • python中动态加载模块和类方法实现
    python中动态加载模块和类方法实现测试代码   文件名: mytest.py 具体代码如下:   注意:模块名,类名,方法名都是变量。   #coding=UTF-8 class TestClass: def sub(se...
    99+
    2023-01-31
    模块 加载 方法
  • 利用java怎么实现一个动态加载功能
    今天就跟大家聊聊有关利用java怎么实现一个动态加载功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java动态加载类的意义和目的:Java动态加载类主要是为了不改变主程序代码,通...
    99+
    2023-05-31
    java ava
  • SpringBoot特点之依赖管理和自动装配(实例代码)
    1.1依赖管理 父项目做依赖管理   自动版本仲裁:在父项目里规定了依赖的版本,只需要引入以来即可,不需要写版本号 依赖管理 <parent> &...
    99+
    2024-04-02
  • java实现动态编译并动态加载的方法
    小编给大家分享一下java实现动态编译并动态加载的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在D盘test目录下有个java文件:AlTest.javap...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作