学习最佳实践G4F中的编程技术:获得python项目的当前安装版本

server/2024/9/24 23:06:43/

获得当前python软件包版本

用importlib获取软件版本

from importlib.metadata import version as get_package_version, PackageNotFoundError
PACKAGE_NAME = "g4f"try:x = get_package_version(PACKAGE_NAME)
except PackageNotFoundError:pass

如果没有安装g4f,可以使用其它软件包来测试,比如pip

from importlib.metadata import version as get_package_version, PackageNotFoundError
PACKAGE_NAME = "pip"try:x = get_package_version(PACKAGE_NAME)
except PackageNotFoundError:pass# '21.2.4'

从环境变量中拿软件版本

如果get_package_version没有拿到版本,那么就从环境变量中拿:
from os import environ
version = environ.get("G4F_VERSION")

但是如果软件没有向环境变量中写入类似G4F_VERSION这样的变量,就无法拿到了。

从github repo中拿软件版本

如果以上两种方法都无法拿到软件版本,而软件是通过github获取存放在特定目录,那么就可以到该目录,获取github repo中的软件版本。

Read from git repository代码:

try:command = ["git", "describe", "--tags", "--abbrev=0"]return check_output(command, text=True, stderr=PIPE).strip()except CalledProcessError:pass

check_output是在subprocess里定义的:
def check_output(*popenargs, timeout=None, **kwargs):

check_output中使用了run指令,run指令也是subprocess里面定义的。
def run(*popenargs,
input=None, capture_output=False, timeout=None, check=False, **kwargs):

比如我们到gpt4free的repo目录里,执行:

cd gpt4free/
xxxx@x250:~/github/gpt4free % python
Python 3.9.18 (main, Nov  9 2023, 01:19:38) 
[Clang 14.0.5 (https://github.com/llvm/llvm-project.git llvmorg-14.0.5-0-gc1238 on freebsd13
Type "help", "copyright", "credits" or "license" for more information.
>>> from subprocess import check_output, CalledProcessError, PIPE
>>> command = ["git", "describe", "--tags", "--abbrev=0"]
>>> x = check_output(command, text=True, stderr=PIPE).strip()
>>> x
'0.2.9.5'


http://www.ppmy.cn/server/121546.html

相关文章

input文本框随其中内容而变化长

<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><title>input文本框随其中内容而变化长</title><style>.input-length {border: 1px solid #ccc;padding: 5px;min-width: 10px;width: auto;}.in…

【30天玩转python】单元测试与调试

单元测试与调试 在 Python 开发中&#xff0c;编写单元测试和进行调试是保证代码质量、减少错误的重要步骤。单元测试可以帮助我们验证代码功能是否符合预期&#xff0c;调试则可以在代码出现问题时快速定位错误原因。 1. 单元测试简介 单元测试是对程序中最小可测试部分&…

脚本注入网页:XSS

跨站脚本攻击&#xff08;Cross-Site Scripting&#xff0c;简称 XSS&#xff09;是一种常见的网络安全漏洞。它是指攻击者在网页中注入恶意脚本代码&#xff0c;当用户访问该网页时&#xff0c;恶意脚本会在用户的浏览器中执行&#xff0c;从而导致一系列安全问题。这些问题可…

在HTML中添加图片

在HTML中添加图片&#xff0c;你需要使用<img>标签。这个标签用于在网页上嵌入图像。<img>是一个空元素&#xff0c;它只包含属性&#xff0c;并且没有闭合标签。要在<img>标签中指定要显示的图像&#xff0c;你需要使用src&#xff08;source的缩写&#xf…

进程间关系与进程守护

一、进程组 1、理解 每一个进程除了有一个进程 ID(PID)之外 还属于一个进程组&#xff0c; 进程组是一个或者多个进程的集合&#xff0c; 一个进程组可以包含多个进程。 每一个进程组也有一个唯一的进程组 ID(PGID)&#xff0c; 并且这个 PGID 类似于进程 ID&#xff0c; 同样…

如何使用 Visual Studio Code 将工作效率提升 200%

在现代开发环境中&#xff0c;选择合适的开发工具能大幅提高开发者的工作效率。Visual Studio Code&#xff08;VS Code&#xff09;作为一款轻量级但功能强大的编辑器&#xff0c;凭借其丰富的插件生态、调试功能和版本控制集成&#xff0c;成为了无数开发者的首选工具。在这篇…

【算法业务】互联网风控业务中的拒绝推断场景算法应用分享(涉及半监督算法、异常检测、变分自编码、样本权重自适应调整、迁移学习等)

1. 业务目标和任务描述 该项目是很早期的一个工作&#xff0c;属于互联网信贷风控场景&#xff0c;研究并应用信贷中的拒绝推断任务&#xff0c;处理方式也许对于目前的一些业务还有参考意义&#xff0c;因此这里做下分享。拒绝推断是指在信贷业务中&#xff0c;利用已知的接受…

北银金科:北京银行“金融操作系统”建设项目

在数字经济的背景下,金融服务体系以数据为关键生产要素、以科技为核心生产工具、以平台生产为主要生产方式,需要一个类似于计算机操作系统的金融操作系统,向下对接大量设备、海量数据,向上支撑金融数字化转型的快速开发与部署,实现数据的可信共享、资源的合理配置、服务的…