栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 内网开发技巧之 pip download

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 内网开发技巧之 pip download

为什么要用 pip download ?

如果你是一名内网 python 开发者,当你发现项目的某个模块缺少了,你会怎么做?
如果内网没有 pip 镜像站点,那么只能:

  1. 打开 pypi.org ,然后下载模块
  2. 一个个找到模块的其他依赖模块
  3. 传入内网,再安装… …

很不幸,如果一个模块有十几个依赖,那就是一次痛苦的经历了

其实,可以用 python 自带的包管理器 pip 的 download 命令~
帮我们下一步到位,下载需要的模块及其依赖,节省不少时间

一、指定模块下载路径

切换到可以上网的机器
这里我使用的环境是

  • 操作系统:windows 10 64 bit – 缩写:win64
  • python 版本:3.9 – 缩写:39
  • 解释器 版本 : cpython – 缩写:cp

例如,我们需要下载 csvkit 模块及其依赖,到我桌面的 csvkit 文件夹中

mkdir C:UsersusernameDesktopcsvkit
# 一定要先创建好目录,用于存放模块和它的依赖模块
pip download <模块/包名> -d <模块/包的存放路径>
pip download csvkit -d C:UsersusernameDesktopcsvkit 

默认情况下pip download 会根据当前操作系统、python 版本、python 解释器版本
将目标模块、以及依赖的模块,都下载到 -d 参数指定的路径下

如果,你仅仅需要下载 csvkit 模块,而不需要该模块的其他依赖

pip download csvkit 
  --no-deps 
  -d C:UsersusernameDesktopcsvkit

如果内外网的机器的【操作系统、python 版本、python 解释器版本】都一致
只需要使用上述的命令足以
如果【操作系统、python 版本、python 解释器版本】大多和外网机器不同,要怎么办呢?
有时我们还可能需要特定文件类型的安装包【*.whl(编译过的二进制)、*.tar.gz 或者 *.zip(源码安装包)】

二、根据操作系统、python 版本、python 解释器版本下载模块

因此,需要了解 pip download 的其他参数1,来应对内外网环境不一致的情形

关于 python 的二进制包和源码包的区别2:l

  1. 二进制包(Binary Packages),通常是 *.whl文件格式,需要通过 pip install *.whl 安装。可以把 python 的二进制包,比作可执行包或 Windows 的 msi 安装程序;
  2. 源码包(Source Packages)通常是*.tar.gz、bz2 、*.zip格式的文件,通常需要解压后,通过 python setup.py 进行编译安装(也可以直接 pip install *.tar.gz)
pip download csvkit 
  --only-binary=:all:  # 模块文件类型过滤器
  --platform win32  # 操作系统的版本
  --python-version 36  # python 3.6
  --implementation cp  # 还可以是 pypy 等不同解释器,默认是 cpython
  -d C:UserscoreJKDesktopcsvkit

当使用 --platform(操作系统)、–python-version(python 版本)、–implementation或–abi(解释器版本),作为限制条件时,必须设置–no-deps(不下载所依赖的模块),或者设置–only-binary=:all:(),并且不能设置–no-binary(或者必须设置为–no-binary=:none: )

提示

项目不需要经常的更新模块,可以在内网部署好 pypiserver(便于在内网大家一起使用 pip 安装模块)
借助 pip download 命令,从外网下载好模块和依赖
再一并传入内网的 pypiserver

如果项目频繁更新模块,可以考虑配置自建内网的 pip 镜像站点
根据实际情况,我只用到了第一种,是前三个中最简单的
第四种需要大容量的存贮,暂不考虑

  • pypiserver
  • pip2pi
  • devpi
  • bandersnatch

  1. Binary 和 Source 包的异同 ↩︎

  2. pip_download 命令手册 ↩︎

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/934869.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号