Python只导出项目依赖包

python导出项目下依赖包

一、如果需要导出 当前环境 所有依赖库,则使用这条命令即可

pip freeze > requirements.txt

(一般用于虚拟环境导出,对项目而已多数存在冗余依赖库)

二、如果需要导出 当前项目 所有依赖包,则需要用到 pipreqs

2-1、安装依赖包

pip install pipreqs

(注意:要在管理员权限下安装,否则容易出现无法启用的情况)

2-2、导出requirements.txt文件(要花很长时间)

通用语句

pipreqs . --encoding=utf-8 --force

也可以自定义多种参数

pipreqs ./ --ignore ./pipeflow --pypi-server https://pypi.tuna.tsinghua.edu.cn/simple/ --encoding utf-8

如图提示Successfully saved requirements file in ./requirements.txt 则成功

requirements.txt效果图

Flask==2.2.2
pika==1.2.0
requests==2.27.1
SQLAlchemy==1.4.35

2-3、命令选参

其中pipreqs后面各跟命令含义如下

1、pipreqs后面 直接跟 “目标路径” 【必填】

在当前项目目录则用 . 

也可以用绝对路径,注意绝对路径有空格要用""包起来

2、--savepath   <string>  结果保存文件 【没必要设置

默认当前目录下requirements.txt

3、--encoding   <string>  编码方式 【建议设置

默认自动,建议使用 utf-8 保证文件解码正确

4、--force     强制的

默认否。若设置此项,当结果文件存在时直接覆盖。

5、--proxy  <string>  代理 【不建议设置

默认不用代理。建议通过--pypi-server指定镜像,就没必要用不稳定的代理了。

6、--pypi-server  <string>   指定pip镜像源 【国内建议设置

默认https://pypi.python.org/pypi/ ,在外网还挺快,在国内还是建议指定 https://pypi.tuna.tsinghua.edu.cn/simple/ 提高检索速度。

当然也可以指定自己喜欢的“pip镜像源”

7、--mod   <compat | gt | no-pin>   输出模式

默认       全等模式,例如  requests==2.27.1

compat  比较近似于,例如 requests~=2.27.1

gt           最低要求,例如 requests>=2.27.1

no-pin    无限制, 例如 requests

8、--ignore     忽略的路径(用 , 分割多个路径)

当一个git项目包含子git项目时建议设置此项。

9、--use-local   仅使用本地包【不建议设置

10、--print    打印结果【没必要设置

默认不展示,直接打开结果文件结果看即可。若设置此项则允许在命令行预览

 

————————————————(如果没有异常,就不需要往下看了)————————————————————————————

 

异常处理

一、有些用户会出现 'gbk' codec can't decode byte 的异常

(图片转自其他同事出现的问题)

①首先建议是升级pipreqs。旧版会有无法指定编码格式的情况,新版不会有。当前博主版本是 pipreqs==0.4.11

pipreqs依赖库少,一般不影响正式环境,可以放心升级。(升级后需要关闭窗口再重新执行pipreqs命令

②(如果①完还是有这异常,)则改代码

找到pipreqs.py文件。一般在 Python39\Lib\site-packages\pipreqs 下,根据实际安装方式定位。

如果你不是用管理员安装的,则可能在 C:\Users\[当前用户名]\AppData\Roaming\Python\Python39\site-packages\pipreqs 下。

把114行的 open(file_name, "r", encoding=encoding)  改为  open(file_name, "r", encoding="utf-8")

把205行的 open(item, "r", encoding=encoding) 改为  open(item, "r", encoding="utf-8")

(不同版本可能有差异,但就是找这两句话就对了)改完重新运行即可

二、有些仓库会出现 red('!!!MUST SET MODULE in the fabfile.py')

这是因为 有import依赖包在pip镜像库或本地无法被定位。

首先,要检测自己代码是否存在import错误了。pipreqs检查的"项目下所有py文件"!而python是"先跑,跑到异常再说"。

然后,检测镜像库,看下是否缺失对应依赖包。一般这异常出现在 跨平台 的项目中。可以用--ignore排除跨平台调用的文件。

例如我的 pipreqs ./ --ignore ./pipeflow

 

 

转载请注明出处: https://my.oschina.net/jacky326/blog/6345424

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章