利用pip和pipreqs导出当前python环境下所依赖的包总结

2024-02-10 05:18

本文主要是介绍利用pip和pipreqs导出当前python环境下所依赖的包总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

引言

很多时候我们会去GitHub上找项目,或者说从其它的地方找到相关的代码,然后有一些已经帮忙做好了requirements文本,我们只需要利用pip就可以进行安装,但还有一部分其实是没有的,所以我们必须要通过其它的方式来得到我们想要的所有依赖。


生成依赖方式

当我们拿到一份较为完整的项目代码时,项目的根目录下是一定会有一个requirements文本文件的,这是作为有利于自己总结当前使用了多少包,并服务于他们节省相应时间的举措,互利共赢用在这里恰逢时机,所以,pip提供了相应的命令:

pip list	# 列举出pip当前环境下的包
pip freeze > requirements.txt	# 生成当前pip环境下的包文件

这里我们可以用如上的两条命令查看当前所需的包,然后如果没有错误提示基本就保证生成requirements文件成功。
在这里插入图片描述
在这里插入图片描述
但这里有一个问题,其实项目中用不到这么多的包,这里生成的requirements文件包含了整个环境下的所有包,那么我们可以通过删除包来达到效果。另外还要提及一下虚拟环境的好处了,因为每个虚拟环境都是作为一个项目,如果在端口切换成当前某个虚拟环境,就不会出现包的困扰了,虚拟环境的配置我之前都有总结过,可看如下链接:

linux下搭建虚拟环境

在Windows下搭建虚拟环境


上述只是基于我们是该项目的管理者,然后怎样使得当前项目能更有助于分享,同时也让项目更利于维护做的一些调整,那么当我们拿到一个新的没有requirements文件的怎么办?

第一种方式:边报错边调试

当我们拿到一个新项目,完全不知道缺少什么依赖或者条件,但知道该程序已经是开发完成没有错误的时候,就可以边运行,看着控制台的报错,一般是importerror,一个个装,这样直到不报错为止,就说明该环境安装成功了,但这样的后果花费的精力很大,另外就是即使能运行了还是对整个项目的脉络不清晰,对这些包的作用与版本没有一个完整的认识。

第二种方式:安装pipreqs模块

我们通过pip安装pipreqs包能对项目文件进行扫描,生成相对应的requirements文件,下面是我的步骤:

如果安装好了pipreqs文件,那么切换到当前项目目录下:

pipreqs ./	# 导出相应的包环境
pipreqs ./ --encoding=utf8	# 以utf8的形式导出包环境
pipreqs ./ --force	# 强制导出包环境,包括如果有同名requirements,可以进行重写

上述一般运行第一条命令就行,但我当时是在Windows的cmd下运行的,这里问题就出现了,它提示我有编码问题:

Traceback (most recent call last):File "f:\anaconda\lib\runpy.py", line 193, in _run_module_as_main"__main__", mod_spec)File "f:\anaconda\lib\runpy.py", line 85, in _run_codeexec(code, run_globals)File "F:\anaconda\Scripts\pipreqs.exe\__main__.py", line 9, in <module>File "f:\anaconda\lib\site-packages\pipreqs\pipreqs.py", line 396, in maininit(args)File "f:\anaconda\lib\site-packages\pipreqs\pipreqs.py", line 341, in initextra_ignore_dirs=extra_ignore_dirs)File "f:\anaconda\lib\site-packages\pipreqs\pipreqs.py", line 75, in get_all_importscontents = f.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 621: illegal multibyte sequence

然后我就运行第二句,指定编码为utf8,但还是报一样的错误:

Traceback (most recent call last):File "f:\anaconda\lib\runpy.py", line 193, in _run_module_as_main"__main__", mod_spec)File "f:\anaconda\lib\runpy.py", line 85, in _run_codeexec(code, run_globals)File "F:\anaconda\Scripts\pipreqs.exe\__main__.py", line 9, in <module>File "f:\anaconda\lib\site-packages\pipreqs\pipreqs.py", line 396, in maininit(args)File "f:\anaconda\lib\site-packages\pipreqs\pipreqs.py", line 341, in initextra_ignore_dirs=extra_ignore_dirs)File "f:\anaconda\lib\site-packages\pipreqs\pipreqs.py", line 75, in get_all_importscontents = f.read()File "f:\anaconda\lib\codecs.py", line 321, in decode(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 33: invalid start byte

那么这种情况就别再试了,应该是项目本身有问题,而不是pipreqs模块有bug,所以我就直接拷贝进了Linux环境中,同样输入上述命令,然后发现是其中一个文件有问题,于是我删除了该文件,再次运行生成了相应的包:
在这里插入图片描述
当然这里我是已经生成好了再运行了一遍,然后它说要用–force强制执行,然后我删除了requirements文件继续运行,但我的项目有点大,可能它搜索相应的模块需要时间,然后只要最后提示如下信息,那么就是成功了:

INFO: Successfully saved requirements file in /home/python/Desktop/requirements.txt

然后可以打开相应的存储位置,我们就会发现多了一个requirements文件。

这篇关于利用pip和pipreqs导出当前python环境下所依赖的包总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/696207

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学