【Python】生成本项目的requeirments.txt

news2025/2/21 23:17:47

有的时候,我们需要对自己写的项目生成一个requeirments.txt,方便其他使用者快速安装依赖项

参考https://www.cnblogs.com/shun7man/p/14080921.html

1.使用pip

如果你的项目本身就是在venv虚拟环境下跑的,那么可以直接用下面的语句生成一个依赖项文件

pip freeze > requirements.txt

image-20230117103932036

但如果你和我一样,没有使用虚拟环境,而是用全局的包的话,那就会出现上图的情况,生成的txt文件里面出现了太多本项目没有用到的包,那你让别人安装那么多没有用的包,岂不是坑人嘛!

所以可以用另外一个项目来解决这个问题

2.pipreqs

项目地址 https://github.com/bndr/pipreqs

使用之前需要先安装一个包

pip install pipreqs
[muxue@bt-7274:~/kook/val-bot]$ pip3.10 install pipreqs
Defaulting to user installation because normal site-packages is not writeable
Collecting pipreqs
  Downloading pipreqs-0.4.11-py2.py3-none-any.whl (32 kB)
Collecting yarg
  Downloading yarg-0.1.9-py2.py3-none-any.whl (19 kB)
Collecting docopt
  Downloading docopt-0.6.2.tar.gz (25 kB)
  Preparing metadata (setup.py) ... done
Requirement already satisfied: requests in /home/muxue/.local/lib/python3.10/site-packages (from yarg->pipreqs) (2.28.1)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/muxue/.local/lib/python3.10/site-packages (from requests->yarg->pipreqs) (1.26.11)
Requirement already satisfied: idna<4,>=2.5 in /home/muxue/.local/lib/python3.10/site-packages (from requests->yarg->pipreqs) (3.3)
Requirement already satisfied: certifi>=2017.4.17 in /home/muxue/.local/lib/python3.10/site-packages (from requests->yarg->pipreqs) (2022.6.15)
Requirement already satisfied: charset-normalizer<3,>=2 in /home/muxue/.local/lib/python3.10/site-packages (from requests->yarg->pipreqs) (2.1.1)
Installing collected packages: docopt, yarg, pipreqs
  DEPRECATION: docopt is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
  Running setup.py install for docopt ... done
Successfully installed docopt-0.6.2 pipreqs-0.4.11 yarg-0.1.9

安装完成后,使用下面的语句来生成文件

pipreqs . --encoding=utf8 --force

这个语句的意思是生成当前目录的项目所用到的包的requirements文件

image-20230117104324080

可以看到,用这个项目生成的文件,包少多了,且确实是本项目需要用到的!

3.创建venv虚拟环境进行测试

3.1 创建

先来吧项目的代码复制到一个新的文件夹,创建一个虚拟环境

python -m venv botest

这会在当前目录下创建一个botest文件夹

此时我们使用pip list查看当前环境下安装了什么包

[muxue@bt-7274:~/kook/test]$ pip3.10 list
Package                Version
---------------------- -----------
aiofiles               0.8.0
aiohttp                3.8.1
aiosignal              1.2.0
aliyun-python-sdk-core 2.13.36
aliyun-python-sdk-kms  2.16.0
APScheduler            3.9.1
async-timeout          4.0.2
attrs                  22.1.0
certifi                2022.6.15
cffi                   1.15.1
charset-normalizer     2.1.1
click                  8.1.3
colorama               0.4.6
crcmod                 1.7
cryptography           38.0.2
docopt                 0.6.2
Flask                  2.2.2
frozenlist             1.3.1
h11                    0.14.0
idna                   3.3
itsdangerous           2.1.2
Jinja2                 3.1.2
jmespath               0.10.0
khl.py                 0.3.7
MarkupSafe             2.1.1
multidict              6.0.2
numpy                  1.24.1
oss2                   2.16.0
pandas                 1.5.2
Pillow                 9.2.0
pip                    22.3.1
pipreqs                0.4.11
pycparser              2.21
pycryptodome           3.15.0
pycryptodomex          3.15.0
python-dateutil        2.8.2
pytz                   2022.2.1
pytz-deprecation-shim  0.1.0.post0
requests               2.28.1
riot-auth              1.0.3
setuptools             63.2.0
six                    1.16.0
tzdata                 2022.2
tzlocal                4.2
urllib3                1.26.11
uvicorn                0.18.3
valorant               1.0.4
Werkzeug               2.2.2
yarg                   0.1.9
yarl                   1.8.1
zhconv                 1.4.3

你会发现还是有很多包啊?这是因为我们只创建了虚拟环境,还没有启动它!

3.2 启动/关闭虚拟环境

用下面的命令启动

[muxue@bt-7274:~/kook/test]$ source botest/bin/activate
(botest) [muxue@bt-7274:~/kook/test]$ 

你会发现命令行前面多了一个(botest),这就代表我们的虚拟环境启动成功了

(botest) [muxue@bt-7274:~/kook/test]$ pip3.10 list
Package    Version
---------- -------
pip        22.2.1
setuptools 63.2.0

再次执行,发现只剩下两个默认的包了,这才是对的!

要想退出虚拟环境,用下面的语句即可

deactivate

3.3 测试

代码拷贝过来了,假设我们现在就是一个刚刚克隆了此仓库,要使用项目的程序猿

此时我们需要利用requirements.txt快速安装需要的包

pip install -r requirements.txt

他会开始一个个安装所需要的包,以及这些包所需要的依赖项;和我们手动安装包是一个效果

image-20230117105528601

随后就出现了一个意料之中的报错

image-20230117105700120

这是因为riot_auth这个包,并没有在pypi里面注册,其安装的方式是用git安装的

pip3.10 install git+https://github.com/floxay/python-riot-auth.git

使用pip freeze创建出来的txt文件里面的依赖项,才是正确的包

riot-auth @ git+https://github.com/floxay/python-riot-auth.git@e70f76002728b99005baccd6fe3157c03d4d9f02

这也是我目前发现的该项目的一个bug,已经提交了issue了!

https://github.com/bndr/pipreqs/issues/350

既然知道问题的情况,那就手动弄一下吧!不过需要提醒的是,这种git方式的pip包经常安装不上,会报下面的错误

image-20230117110626755

个人猜测和github的网络环境也有关系,所以得多试几次,或者手动克隆,粘贴到本地.site-packages源码里面

如果一切顺利的话,那应该是能安装完成的!此时就可以愉快的运行项目代码了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/184677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java集合类-List/Queue

List List集合代表一个元素有序、可重复的集合&#xff0c;集合中每个元素都有其对应的顺序索引。可以通过索引来访问指定位置的集合元素。List集合默认按元素的添加顺序设置元素的索引。 List接口&#xff08;被改进&#xff09;和ListIterator接口&#xff08;被改进&#xf…

四六级英语学习(一)医疗健康类

suffer from 遭受 经历 high blood pressurehypertension 高血压 take steps to take measures to 采取措施 silent 沉默的 silence 沉默 -er表示人 或机器 eg: killer computer strokes 中风 attack 攻击&#xff0c;进攻 almostnearly 几乎 差不多 disease 大病 illn…

【uniapp】H5和小程序动态导入模块的方法

做uniapp项目通常都是用import Module from "./../module.js"方式引用模块的&#xff0c;但是&#xff0c;这种方式是静态的&#xff0c;还是只能放在执行代码段的顶部&#xff08;或者外部&#xff09;&#xff0c;若想放在代码中执行&#xff0c;那就会报错的&…

微信小程序——生命周期,生命周期的分类,页面生命周期,生命周期函数的分类,应用的生命周期函数,页面的生命周期函数,wxs脚本概述

一.生命周期什么是生命周期生命周期&#xff08; Life Cycle &#xff09;是指一个对象从创建->运行->销毁的整个阶段&#xff0c;强调的是一个时间段。例如&#xff1a;&#xff0e;张三出生&#xff0c;表示这个人生命周期的开始&#xff0e;张三离世&#xff0c;表示这…

单源最短路的建图方式(Dijkstra)

由于是复习&#xff0c;所以不会解释太多。 主要为Dijkstra的堆优化板子和朴素版&#xff08;看数据范围&#xff09; 再次看看时间复杂度[ n 为点数&#xff0c;m 为边数 ]&#xff1a;朴素版&#xff1a;O()&#xff0c;堆优化版&#xff1a;O( (nm)logm )。 目录 1.热浪&…

CS专业学习回顾

前言 起因是想清理一下github的仓库&#xff0c;没错是清理&#xff0c;之前fork了很多仓库学习代码&#xff0c;还有自己随便上传的一些代码&#xff0c;因为感觉没有留着的必要&#xff0c;博客多少可以review&#xff0c;这些早期写的代码&#xff0c;如洪水猛兽&#xff0…

java集合类-操作集合

Collections&#xff08;操作集合的工具类&#xff09; 该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作&#xff0c;还提供了将集合对象1.设置为不可变、对集合对象实现同步控制等方法。自行看API即可。 2.有查找、替换集合元素的类方法。 有同步控制的方法&am…

使用 Python 深度学习方法对电影评论进行情绪预测

情感分析是一种自然语言处理问题&#xff0c;可以理解文本并预测潜在意图。 在本文中&#xff0c;你将了解如何使用 Keras 深度学习库将电影评论的情绪预测为正面或负面。 看完这篇文章&#xff0c;你会知道&#xff1a; 关于自然语言处理的 IMDB 情感分析问题以及如何在 Ke…

核心表结构

核心表结构目录概述需求&#xff1a;参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challenge Survive. happy for hardess to solve denp…

Android重新签名APK

前提已经配置好了Java环境。在要签名的apk文件目录路径位置&#xff0c;输入cmd&#xff0c;打开命令窗口。在命令窗口中输入jarsigner&#xff0c;有相应的提示。然后输入重新签名指令如下&#xff1a;jarsigner -verbose -keystore E:\tmc\keystore\androidsign.jks -signedj…

51单片机学习笔记-10IIC总线

10 I2C总线 [toc] 注&#xff1a;笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 10.1 AT24C02和I2C介绍 10.1.1 存储器介绍 图10-1 存储器分类 一般来说&#xff0c;RAM读写速度极快&#xff0c;但掉电丢失&#xff1b;而…

InfluxDB OSS v2.6.0安装使用小结(ubuntu Linux)

1 InfluxDB简介 InfluxDB是一款用Go语言编写的开源分布式时序、事件和指标数据库。 官网&#xff1a;https://www.influxdata.com 1.1 特色 InfluxDB的主要特色 1&#xff09;无结构&#xff08;无模式&#xff09;&#xff1a;可以是任意数量的列 2&#xff09;可拓展的 3&…

学习云原生的阅读书单

以下是我从豆瓣阅读上找到的书单 《云原生服务网格lstio》 《云原生操作系统Kubernetes》 《OpenShift云原生架构&#xff1a;原理与实践》

[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

光标位置 回忆上次内容 上次讲了 三引号的输出三引号中 回车和引号 都会 被原样输出\ 还是需要从 \\转义 黑暗森林 快被摸排清了 还有哪个 转义序列 没 研究过吗&#xff1f;&#x1f914; \e是 干什么的&#xff1f;&#x1f914; 回忆转义 转义转义 转化含义 \反斜杠(…

CnOpenData劳务外包企业工商注册基本信息数据

一、数据简介 随着我国社会主义市场经济的发展&#xff0c;劳务市场中的用工方式也朝着多样化方向演变&#xff0c;劳务外包正是现代化人力资源管理和企业生产实际结合的一种独特的新模式。 在劳务外包过程中&#xff0c;企业将人事管理的部分或者全部工作外包给一个专门的服务…

Hadoop 复习 ---- chapter01【大数据概念】

Hadoop 复习 ---- chapter01【大数据概念】1. 什么是大数据大数据的简介从IT过渡到DT2. Hadoop生态系统工具HADOOPHBASEHIVESTORMZooKeeperSqoopMAHOUT1. 什么是大数据 大数据的简介 指“无法由现有软件工具进行提取、存储、搜索、共享、分析和处理的庞大而复杂的数据集”。 通…

【软件测试】某城商行手机银行授权漏洞分析黑客攻击,测试优化手段......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 问题描述 据报道&am…

【FreeRTOS】详细讲解FreeRTOS的软件定时器及通过示例讲述其用法

软件定时器 所谓定时器&#xff0c;也就可以类比生活中人们常用的闹钟&#xff0c;可以单次响铃提醒&#xff0c;也可以间隔固定时间响铃提醒&#xff1b;与FreeRTOS定时器不同的是周期不同&#xff0c;FreeRTOS的周期更加短&#xff0c;一般使用毫秒(ms)、秒(s)。   软件定时…

Python的数字类型、布尔类型和运算优先级

文章目录1.数字类型1.1分类1.2整数1.3浮点数1.4复数2.数字运算符2.1运算符表格2.2 运算符 //3.divmod&#xff08;&#xff09;函数4.abs&#xff08;&#xff09;函数4. int()&#xff0c;float() 和 complex() 函数5.pow&#xff08;&#xff09;函数和运算符 **6.布尔类型6.…

NB-IoT的低功耗特性原理解说

什么是NB-IoT NB-IoT的中文名叫窄带蜂窝物联网(Narrow Band Internet of Things)&#xff0c;NB-IoT网络是基于4G网络演进过来的&#xff0c;所以它在上行和下行的复用技术上还是沿用了4G的OFDMA和SC-FDMA。NB-IoT有三大特性&#xff1a;速率低&#xff0c;成本低&#xff0c;…