本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills

  这是我的系列文章「Python实用秘技」的第3期,本系列立足于笔者日常工作中使用Python积累的心得体会,每一期为大家带来一个3分钟即可学会的简单小技巧。

  作为系列第3期,我们即将学习的是:导出项目的极简环境依赖

  很多朋友都知道,利用pip也好,利用conda也好,我们可以使用pip freezeconda export等语句来对当前的Python环境依赖进行导出备份,以方便在其他机器上还原环境。

  但此类环境依赖导出方法的局限在于,它会将当前环境下所有已安装的库信息进行导出,使得导出的结果繁杂臃肿。

  而如果我们只想针对某个Python项目工程,将其内部真正导入的库信息进行导出,就可以用到pipreqs这个工具,使用pip install pipreqs进行安装之后,就可以以命令行的形式使用它,基础使用语法为:

pipreqs 目标工程根路径名

  譬如pipreqs ./就将当前路径视作目标工程的根目录进行导出,以一个示例工程为例(其中encoding参数用于设置导出文件的编码,--force用于设置允许覆盖已存在的同名文件),并与pip freeze的结果进行对比,可以看到,pipreqs导出的环境依赖非常之简洁,在很多情况下更适合用来还原Python项目的最小依赖信息:

  有了这个文件,在其他环境或机器上使用pip install requirements.txt命令就可以快速还原项目依赖,pipreqs还有一些实用的参数,你可以前往https://github.com/bndr/pipreqs#usage查看参数说明,快在你的项目中试试它吧~


  本期分享结束,咱们下回见~

「Python实用秘技03」导出项目的极简环境依赖的更多相关文章

  1. 「Python实用秘技04」为pdf文件批量添加文字水印

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第4期 ...

  2. 「Python实用秘技11」在Python中利用ItsDangerous快捷实现数据加密

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第11 ...

  3. 「Python实用秘技01」复杂zip文件的解压

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的新系列文章「Python实用秘技」的第1 ...

  4. 「Python实用秘技02」给Python函数定“闹钟”

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第2期 ...

  5. 「Python实用秘技05」在Python中妙用短路机制

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第5期 ...

  6. 「Python实用秘技06」逐行监听Python程序的内存消耗

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第6期 ...

  7. 「Python实用秘技07」pandas中鲜为人知的隐藏排序技巧

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第7期 ...

  8. 「Python实用秘技08」一行代码解析地址信息

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第8期 ...

  9. 「Python实用秘技09」更好用的函数运算缓存

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第9期 ...

随机推荐

  1. [bzoj4650]优秀的拆分

    由于字符串是AABB的形式,枚举AA和BB中间的位置,分别考虑AA和BB的数量,乘起来sigma一下即为答案以下考虑AA的情况(BB同理),枚举A的长度,然后按照这个长度分为若干块,那么每一个A一定可 ...

  2. CreateProcess error=206, 文件名或扩展名太长。

    改:

  3. maven插件慢的解决方案

    -DarchetypeCatalog=local 地址:https://www.cnblogs.com/del88/p/6286887.html

  4. CSS 基础 - Cascade and Inheritance

    CSS 基础 - Cascade and Inheritance MDN学习笔记:https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Building ...

  5. Cannot connect to runtime process

    发生一个或多个错误. 未能启动调试适配器.可以在输出窗口中查看额外的信息. Cannot connect to runtime process, timeout after 10000 ms (rea ...

  6. 实战!spring Boot security+JWT 前后端分离架构认证登录!

    大家好,我是不才陈某~ 认证.授权是实战项目中必不可少的部分,而Spring Security则将作为首选安全组件,因此陈某新开了 <Spring Security 进阶> 这个专栏,写一 ...

  7. 洛谷 P6222 - 「P6156 简单题」加强版(莫比乌斯反演)

    原版传送门 & 加强版传送门 题意: \(T\) 组数据,求 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^n(i+j)^k\mu^2(\gcd(i,j))\g ...

  8. Codeforces 521E - Cycling City(点双连通分量+分类讨论)

    Codeforces 题面传送门 & 洛谷题面传送门 大家都是暴力找生成树然后跳路径,代码不到 50 行(暴论)的一说--好,那本蒟蒻决定提供一种代码 150 行,但复杂度也是线性的分类讨论做 ...

  9. js ajax 请求

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Linux之vi和vim编辑器

    目录 1. vi和vim简介 2. vi 和 vim 的三种常见模式 2.1 正常模式 2.2 插入模式 2.3 命令行模式 3. 三种模式间的切换 4. 常用快捷键案例 5. 常用命令 1. vi和 ...