利用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

相关文章

Python FastMCP构建MCP服务端与客户端的详细步骤

《PythonFastMCP构建MCP服务端与客户端的详细步骤》MCP(Multi-ClientProtocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持St... 目录简介环境准备服务端实现(server.py)客户端实现(client.py)运行效果扩展方向常见问题结

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”