当前位置: 首页 > news >正文

python pip3 freeze_Python系列之包管理工具【pip3】

1 pip3工具介绍

pip3是python3用来管理包的工具,可以用来安装、升级、卸载第三方库,当然也可以查看包信息,更加可以发布自己所写的包到Pypi(一般会借助另一个工具twine)。

2 pip3在线安装python3的包

我们最熟悉的安装包命令是:

sudo pip3 install some-package-name

但有几个问题,需要我们弄清楚:

(1)这是在线安装,那么是从哪个网站找到的安装源呢?怎么更改安装源呢?

默认的安装源是

https://pypi.python.org/simple/

可以通过以下命令更改安装源

sudo pip3 install --index-url https://pypi.douban.com/simple/ some-package-name

(2)具体的包是被安装到哪个目录呢?怎么手动指定安装目录?

默认的安装目录(取决于具体操作系统版本),一般是

/usr/local/lib/python3.8/dist-packages 【加了sudo】

或者

/home/some-user/.local/lib/python3.8/dist-packages 【没加 sudo】

可以通过以下命令更改安装的目录

sudo pip3 install --prefix /path/to/dir some-package-name

或者

sudo pip3 install --install-dir /path/to/dir some-package-name

(3)安装的包的版本是多少呢?怎么手动指定安装的版本?

默认是安装最新版本,可以通过以下命令指定版本

sudo pip3 install "some-package-name == 1.0.1"

sudo pip3 install "some-package-name >= 1.0.1"

sudo pip3 install "some-package-name <= 1.0.1"

(4)除了安装具体的包到指定的目录,额外做了哪些事情呢?

如果要安装的包支持通过脚本启动的话,会把脚本安装到以下目录,具体取决于操作系统版本,一般是

/usr/local/bin/【加了 sudo】

或者

/home/some-user/.local/bin 【没加 sudo】

3 pip3本地安装python3的包

如果我们的项目没有发布上传到Pypi或者其他网站,只是位于本地,那么该如何从本地安装到我们的系统中呢?

这里需要分作几种情况,一是带有setup.py文件的源码库,另外就是.whl格式的压缩文件,再有就是.egg格式的压缩文件。

其中pip3可以用来安装前面两种情况的库,第三种情况的库一般用easy_install工具。安装.whle格式压缩文件比较简单,命令如下:

sudo pip3 install some-package.whl

而源码安装的话,可以向其他方式一样,安装到生产环境,不过呢,也可以安装到开发环境。

安装到生产环境命令是:

sudo pip3 install .

安装到开发环境命令是:

sudo pip3 install -e .

这里以安装公司的TNG框架为例,说明源码安装的细节。

(1)从code server上下载源码到本地,然后切到源码的根目录

(2)安装到开发环境

安装命令如下

wenca@WENCA-Y3PK5:~/tngpi$ sudo pip3 install -e .

安装完后,TNG启动脚本信息

TNG安装目录信息如下,可以发现开发模式下的安装,并没有复制源码库【tng/】到安装目录里面,只是在安装目录下建立一个【TNG.egg-link】文件,该文件内容【/home/wenca/tngpi】指向了源码库安装前的路径。同时呢,会在源码库安装前的路径下,新建文件夹【ENG.egg-info/】,内如如图。

TNG版本信息如下,可以发现版本信息中显示了源码库的位置【/home/wenca/tngpi】为源码库安装前的路径。

(3)安装到生产环境

安装命令如下

wenca@WENCA-Y3PK5:~/tngpi$ sudo pip3 install .

TNG启动脚本信息

TNG安装目录信息,可以发现生产模式下的安装,会复制源码库【tng/】到安装目录,同时也会建立新的文件夹【xxxxx.dist-info】,其中内容如图,与开发模式安装时新建的【TNG.egg-info】内容相同。

TNG版本信息如下,其中显示了源码库的位置,为安装目录。

4 pip3 其他操作

查看安装的包

# 查看所有包的预览信息

pip3 list

# 查看不被依赖的包

pip3 list --not-required

# 查看过期的包

pip3 list --outdated

# 查看可升级的包

pip3 list --upgradable

# 查看单个包的详细信息

pip3 show some-package

检索网站上存在的包

# 从默认位置检索

pip3 search some-package

# 更改检索位置

pip3 search --index-url https://pypi.douban.com/simple/ some-package

包的依赖处理

# 列举依赖包

pip3 freeze

# 生成依赖包的需求文件

pip3 freeze > requirements.txt

# 安装需求文件里的依赖包

pip3 install -r requirements.txt

相关文章:

  • python元组倒序排列_python序列(列表,元组,字典)的常用排序
  • python k线顶分型_顶分型和底分型的确认及K线包含处理
  • oracle大量删除数据之后索引是否需要重建_深入浅出索引
  • python3.70_Python 2.7 辛苦了,你好Python 3.7
  • 内存分段分页机制理解_20 张图揭开「内存管理」的迷雾,瞬间豁然开朗
  • wpf项目无法使用针式打印机_针式打印机630K常见问题及解决方法
  • 控制网页frame vba_VBA网络通信基础
  • python str转list_python中从str中提取元素到list以及将list转换为str的方法
  • postman添加map_postman 脚本编程入门
  • 不同平台上安装python的方式是一样的吗_怎样在不同的操作系统上安装Python?
  • asp中注释掉代码_面试题:ASP.NET MVC笔试试卷
  • mysql 修改字段长度_Java架构笔记-通过MySQL存储原理来分析排序和锁
  • python中tuple的意思_Python中的tuple元组详细介绍
  • 两组声音的一维数据如何比较相似度_仅听声音就画出人脸,GAN再添新能力
  • mvc 扫描二维码跳转内部指定页面_小程序跳转最全使用手册
  • angular组件开发
  • create-react-app做的留言板
  • JavaScript实现分页效果
  • MaxCompute访问TableStore(OTS) 数据
  • MySQL QA
  • mysql 数据库四种事务隔离级别
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • SpiderData 2019年2月23日 DApp数据排行榜
  • v-if和v-for连用出现的问题
  • 技术胖1-4季视频复习— (看视频笔记)
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • ![CDATA[ ]] 是什么东东
  • #数学建模# 线性规划问题的Matlab求解
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (差分)胡桃爱原石
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (算法)前K大的和
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)为C# Windows服务添加安装程序
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .apk 成为历史!
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .skip() 和 .only() 的使用
  • @angular/cli项目构建--http(2)
  • @RequestBody与@ResponseBody的使用
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [1525]字符统计2 (哈希)SDUT
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [ajaxupload] - 上传文件同时附件参数值
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [CF226E]Noble Knight's Path
  • [HDU5685]Problem A