最近写完的自动化脚本,分享给同事的时候发现依赖包很难解决(使用的不是virtualenv环境)。想起来之前看开源接口平台项目的时候可以一键下载依赖包,于是就找到了第三方包pipreqs,可以自动帮助我们自动生成requirements.txt

第一步:下载pipreqs工具包(pip install pipreqs)

Microsoft Windows [版本 10.0.17134.1069]
(c) 2018 Microsoft Corporation。保留所有权利。 C:\Users\wy.DESKTOP-KENPKKP\Desktop\Dingda\dingAPI>pip install pipreqs
Collecting pipreqs
Downloading https://files.pythonhosted.org/packages/f8/8d/2e7c15bc5fcab54f9c5b404b5668fdac65f5e3224b2116097fae1299fc98/pipreqs
-0.4.9-py2.py3-none-any.whl
Collecting docopt
Downloading https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-
0.6.2.tar.gz
Collecting yarg
Downloading https://files.pythonhosted.org/packages/8b/90/89a2ff242ccab6a24fbab18dbbabc67c51a6f0ed01f9a0f41689dc177419/yarg-0.
1.9-py2.py3-none-any.whl
Installing collected packages: docopt, yarg, pipreqs
Running setup.py install for docopt ... done
Successfully installed docopt-0.6.2 pipreqs-0.4.9 yarg-0.1.9

第二步:切换到项目路径下,生成依赖包的txt文档(pipreqs ./ --encoding=utf8)

期间遇到报错:编码错误(UnicodeDecodeError: 'gbk' codec can't decode byte 0x95 in position 40)

C:\Users\wy.DESKTOP-KENPKKP\Desktop\Dingda\dingAPI>pipreqs ./
Traceback (most recent call last):
File "c:\users\wy.desktop-kenpkkp\appdata\local\programs\python\python36\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
......
extra_ignore_dirs=extra_ignore_dirs)
File "c:\users\wy.desktop-kenpkkp\appdata\local\programs\python\python36\lib\site-packages\pipreqs\pipreqs.py", line 75, in ge
t_all_imports
contents = f.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0x95 in position 40: illegal multibyte sequence

找到原因是因为在Windows下需要制定编码方式为:uft-8,操作如下

C:\Users\wy.DESKTOP-KENPKKP\Desktop\Dingda\dingAPI>pipreqs ./ --encoding=utf8
INFO: Successfully saved requirements file in ./requirements.txt

第三步:查看需要的依赖包(type requirements.txt)

C:\Users\wy.DESKTOP-KENPKKP\Desktop\Dingda\dingAPI>type  requirements.txt
requests==2.18.4
xlutils==2.0.0
xmltodict==0.12.0
xlrd==1.2.0
dicttoxml==1.7.4

下载依赖包方法(pip install -r requriements.txt)

C:\Users\wy.DESKTOP-KENPKKP\Desktop\Dingda\dingAPI>pip install -r  requirements.txt
Requirement already satisfied: requests==2.18.4 in c:\users\wy.desktop-kenpkkp\appdata\local\programs\python\python36\lib\site-p
ackages (from -r requirements.txt (line 1)) (2.18.4)
Requirement already satisfied: xlutils==2.0.0 in c:\users\wy.desktop-kenpkkp\appdata\local\programs\python\python36\lib\site-pac
kages (from -r requirements.txt (line 2)) (2.0.0)
Requirement already satisfied: xmltodict==0.12.0 in c:\users\wy.desktop-kenpkkp\appdata\local\programs\python\python36\lib\site-
packages (from -r requirements.txt (line 3)) (0.12.0)
Requirement already satisfied: xlrd==1.2.0 in

附带pipreqs详细用法

gitbug地址:https://github.com/bndr/pipreqs

  • 用法:
  • pipreqs [选项] <路径>
  • 选项:
  • use-local仅使用本地软件包信息,而不是查询PyPI
  • pypi-server 使用自定义PyPi服务器
  • proxy 使用代理,参数将传递到请求库。您也可以只设置终端中的environment参数:
  • ignore <目录> ...忽略多余的目录
  • encoding 使用encoding参数打开文件
  • savepath <文件>将需求列表保存在给定文件中
  • print在标准输出中输出需求列表
  • force覆盖现有的requirements.txt
  • clean <文件>通过删除项目中未导入的模块来清理requirements.txt。

Python项目生成所有依赖包的清单的更多相关文章

  1. 将Python项目生成所有依赖包的清单requirements .txt文件

    在开发中不同的项目总会牵扯到各种不同作用的包安装,下面是总结一下对写好的项目自动生成依赖清单,以及在新环境下解决依赖的方法: 一:生成所有依赖清单requirements.txt 这里需要使用到的工具 ...

  2. python项目生成及导入依赖的第三方库

    requirements.txt用来记录项目所有的依赖包和版本号,只需要一个简单的pip命令就能完成. pip freeze >requirements.txt 然后就可以用 pip insta ...

  3. Python一键安装全部依赖包

    requirements.txt用来记录项目所有的依赖包和版本号,只需要一个简单的pip命令就能完成. pip freeze >requirements.txt 然后就可以用 pip insta ...

  4. Python 一键安装全部依赖包

    使用 pip requirements.txt 用来记录项目所有的依赖包和版本号,只需要一个简单的 pip 命令就能完成. pip freeze > requirements.txt 生成的文件 ...

  5. 【Tomcat】使用Tomcat部署Spring Boot项目生成的jar包

    介绍 简单来说,Tomcat是一个免费的,用于Java Web应用以及其它Web应用的一个Web服务器.(简单地概括一下,可能有误) 下载与安装 本文章目标是把Spring Boot Web项目生成的 ...

  6. Gradle | Gradle项目无法导入依赖包

    Gradle | Gradle项目无法导入依赖包 背景 今天使用idea导入一个Gradle项目,使用 gradle build构建成功,但是项目还是无法正常导入依赖包,显示错误如下: 解决方案 后来 ...

  7. Python项目生成requirements.txt文件及pip升级问题解决及流程

    缘由:新项目使用Python, PC上的python包不全,需要通过requirements.txt文件指定安装所需包 pip安装遇到一些坑 一.直接使用pip包管理工具生成requirements. ...

  8. 使用VirtualEnvWrapper隔离python项目的库依赖

    是什么 VirtualEnv用于在一台机器上创建多个独立的python运行环境,VirtualEnvWrapper为前者提供了一些便利的命令行上的封装. 为什么要用 - 隔离项目之间的第三方包依赖,如 ...

  9. Python项目生成requirements.txt的多种方式

    我相信任何软件程序都会有依赖的类库,尤其现在开源如此的火爆,因为一个项目可能会有无很多的依赖的包 这个时候难道我们都要一个一个的去找到安装吗?即使你找到了依赖的包 但是呢模块的版本又有很多难道你都要装 ...

随机推荐

  1. Java入门学习笔记(全)

    JAVA https://zhuanlan.zhihu.com/p/21454718 引用部分实验楼代码,侵删 先通读文档 再亲自试标程 复习时自己再批注 1.a = b += c = -~d a = ...

  2. OpenGl 导入读取多个3D模型 并且添加鼠标控制移动旋转

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11627508.html 前言: 因为接下来的项目需求是要读取多个3D模型,并且移动拼接,那么我 ...

  3. Navicat使用常见的两个问题及解决方法,提高开发效率

    Navicat使用常见问题 在我们日常开发过程中,一般不会直接使用命令行来操作 MYSQL 数据库,而会选择一些图形化界面去帮助我们来进行此类操作,常用的有:SQLyog(Logo也是小海豚),Nav ...

  4. 解决使用MUI时mui-slider-item高度不一致的自适应问题

    今天在写一个MUI项目的时候,发现使用slider时,最高的mui-slider-item会把mui-slider-group撑开,而其他的mui-slider-item下面会出现很大的空白. 百度了 ...

  5. Java 学习笔记之 实例变量非线程安全

    实例变量非线程安全: 如果多个线程共同访问1个对象中的实例变量,则可能出现“非线程安全”问题. public class UnSafeHasSelfPrivateNum { private int n ...

  6. Java 学习笔记之 异常法停止线程

    异常法停止线程: public class RealInterruptThread extends Thread { @Override public void run() { try { for ( ...

  7. 10个值得深思的_PHP_面试问题

    Q1 第一个问题关于弱类型 $str1 = 'yabadabadoo'; $str2 = 'yaba'; if (strpos($str1,$str2)) { echo "\"&q ...

  8. php企业微信获取员工userid以及打卡信息

    企业微信可以通过部门列表获取部门下的员工信息,从而获取到员工的userid //首先获取需要的access_token $access_token = json_decode($this->ge ...

  9. Java线程池的底层实现与使用

    前言 在我们进行开发的时候,为了充分利用系统资源,我们通常会进行多线程开发,实现起来非常简单,需要使用线程的时候就去创建一个线程(继承Thread类.实现Runnable接口.使用Callable和F ...

  10. Spring基础(二)

    一.使用注解配置Spring 1.1步骤 --配置文件中,指明注解位置 --要用的地方打上注解 --改对象的作用范围(修改掉默认的单例,变多例) --属性的注入(两种) 使用的反射实现 set方法实现 ...