下载后的python工程包怎么用_pip 通过 requirements 文件,批量下载python包,批量离线安装python包...

本文概览

本文主要讲述 pip 离线安装包的相关事宜,

主要针对内网无法直接使用pip安装的情况, 使用的是linux 服务器

由于大多数情况下都可直接使用 pip install -r requirements.txt

我的讲述重点是能够学会离线的环境下批量安装python库

会兼顾一些常见问题和基础知识,本文不会讲的太深,在一些地方会给出链接,以便深入讨论该主题

本文不仅仅是为了写出解决方案,更多地是学习python 库的基础知识,以便遇见问题时能够自行解决

本文目录

python库的安装方法 主要讲安装python 库的几种方式及其分析

pip, pypi与python 库 主要讲安装pip 的安装方法,与python 库的各种分类

操作步骤 主要讲整体操作

常见问题 各种安装或异常情况的问题及其处理

该文也是边学习边总结中不断修改,不断更新的,希望能够帮助到你,有问题可留言评论

一、 python库的安装方法

更多关于python 库安装的资料

常见的安装方法

直接在 pypi 官网下载,而后进行手动安装

使用 pip 根据requirements文件下载安装包,到离线环境中再使用 pip 安装

通过docker 安装相应环境,高级版

通过 Ansible 自动化部署,超级版

各种方式优劣

第一种效率低,但可以解决一两个包的安装,暂时性地解决问题

第二种是本文推荐的方式,可以批量的下载,并且批量安装,解决的是一台服务器上安装多个包的问题

第三种这种方式可以将python 环境进行复制,更适合于多个服务器的安装

不了解,有兴趣可以自行学习

二、pip, pypi与python 库

pip 官方文档

pip 快速上手

pypi 官网

python package官方文档

pypi 是存储 python 库(package) 并可通过 pip 进行安装的一个平台

python 库 比作货物,pypi 就是存储货物的仓库,而pip 可以想象成 pypi 的管理人员,帮助你获取python 库

pip 也是一个python 库,是 easy_install 的升级版,两者就好像 rpm 和 yum 一样

pypi 是一个python 库的官方存储仓库,相应的还有一些镜像源,用来提升速度的

python 库

python 库是什么

python 库本质上就是一个python 程序包,路径一般在 /usr/lib/python3.6/site-packages 下

python 库很重要的一点是 库与库之间是相互依赖的,还有python 库的版本问题也很重要

python 库的常见分类

是否需要安装后才可使用,可以分为标准库(内置库)和第三方库

按照操作系统,可以大致分为 windows 和 UNIX 系统两类

按照python 版本,可以分为 python 2 ,python 3.6,python 3.7 等等

按照解释器,可以分为 cp(C语言 解释器),jp(Java 解释器),IronPython(.Net 解释器)等等

并且库本身还有很多版本,相应版本之间也会有差异

按照安装包的方式可以分为, 源码包,wheel 包, egg包

源码包,wheel 包与 egg 包

常见的是 源码包和wheel 包,egg 已经较少了

源码包就是二进制包,一般安装后会有一个可执行文件

wheel 包是一种包的格式,可直接使用 pip install xxx.whl 进行安装

egg 包是以前的版本,相对来说,wheel 格式是 egg 格式的升级版本 ,可使用 python setup.py xxx.egg进行安装

wheel包的命名方式(源码包只有包的版本号)

wheel包名官方文档

wheel 包的命名格式为 {distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl

例如 mysql_connector-2.1.6-cp36-cp36m-win_amd64.whl

一些通用的包可以使用 no 或者 any 对相应字段进行替换,例如这个包是linux 和 windows 都通用的,就可以在platform 上写 any

名称

对应名称

解释

distribution

mysql_connector

包名

version

2.1.6

版本

bulid tag

备注标签

可省略

python-tag

cp36

表示 cpython 3.6 版本

abi-tag

cp36m

abi Application Binary Interface

应用程序二进制接口

platform

win_amd64

platform 还可以是 any

win32 , linux_i386 , linux_x86_64, any 表示 跨平台

三、操作步骤

1. 源码包手动安装

以 uwsgi 为例,在linux 上安装uwsgi

下载 uwsgi 源码包, Pypi 官网下载

解压 tar -zxvf uwsgi.tar.gz

进入目录 cd uwsgi

使用python 安装 python3 setup.py install

即可安装成功

更简单的方法

pip3 install uwsgi-2.0.18.tar.gz

2. pip 安装 官方说明

In some cases, you may want to install from local packages only, with no traffic to PyPI.

1. 首先,在项目中分析出所有依赖的库

pip freeze > requirements.txt # 该方法仅可以使用在虚拟环境中,会将python 解释器下的所有包都导出

pipreqs ./ --encoding=utf-8 --force # 表示覆盖该原有requirements.txt

2. 将所有包下载到DIR这个目录中

$ pip download -d DIR -r requirements.txt

$ pip wheel -w DIR -r requirements.txt

切记,不要在 windows 下载包,然后放到 Linux 上进行安装,这样八成装不上

这两条命令的区别在于wheel 方式下载会将下载的包放入wheel 缓存,但缺点是wheel 不可以下载源码包

download 命令会查看wheel缓存,然后再去PyPI下载库,但download命令下载的包不会进入wheel缓存,download 的优点是可以下载源码包

需要注意,使用wheel 方式安装可能会报错,因为有些包是源码包,不能被打包成wheel 格式

download 方法下载的包,不会对依赖性进行检查,这意味着,如果下载 Flask-PyMongo 这个包,只会下载该包,而不会下载 pymongo,经试验发现,download 适合补充wheel不可下载的包,两者搭配使用,才能将requirements文件的库完整的下载

注意: 如果只使用download 方法下载,很有可能安装时候会报错

ff3a30ad7c3647ee9632d22883f5254b.jpg

3. 将文件打包后放到离线服务器上,并进行解压缩

下载后执行下面的命令就可以进行安装了

$ pip3 install --no-index --find-links=DIR -r requirements.txt

命令说明

freeze 将依赖关系分析出来并 使用管道符导入到该文件中

download 分析 requirements 文件,将所有包进行下载,通过 d 选项导入 DIR 文件夹

wheel 分析requirements 文件,并将所有包及其依赖包下载为 wheel 格式,通过 w 选项导入 DIR 文件夹中

--find-links 指定离线安装的文件夹DIR,也就是你下载好的包

注意: --no-index 必须搭配 --find-links 使用--no-index¶

Ignore package index (only looking at --find-links URLs instead).

四、常见问题

注意生产环境是什么平台,如果是Linux,你需要在虚拟机中下载 wheel包,切记

包名中有 win ,代表只能在windows 中安装

没有 win,代表跨平台

安装时报错,不能找到相应的包,打开文件夹后却发现有 cffi 这个库 Collecting cffi==1.11.5 (from -r lla/requirements.txt (line 12))

Could not find a version that satisfies the requirement cffi==1.11.5

(from -r lla/requirements.txt (line 12)) (from versions: )

No matching distribution found for cffi==1.11.5 (from -r lla/requirements.txt (line 12))

原因是该库是3.7 版本,而服务器是3.6 版本,导致安装不上

使用以下命令选择合适的版本,注意 --no-deps 不可缺少,参考官方文档

pip3 download

--no-deps

--platform linux_x86_64

--python-version 36

--implementation cp

--abi cp36m

-r requirements.txt -d pk

下载时报错 Failed building wheel for alembic

Running setup.py clean for alembic

Running setup.py bdist_wheel for Mako ... error

Complete output from command /usr/local/bin/python3.7 -u -c "import setuptoolstokenize;

__file__='/tmp/pip-wheel-e6wqgb6g/Mako/setup.py';

f=getattr(tokenize,'open', open)(__file__);

code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))"

bdist_wheel -d /tmp/pip-wheel-l_pjqx6k:

usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]

or: -c --help [cmd1 cmd2 ...]

or: -c --help-commands

or: -c cmd --help

error: invalid command 'bdist_wheel'

----------------------------------------

Failed building wheel for Mako

Running setup.py clean for Mako

Failed to build mysql-connector uwsgi SQLAlchemy alembic Mako

ERROR: Failed to build one or more wheels

问题原因,因为这些包的格式是 tar.gz,也就是源码包,是不可以直接转为 wheel 包的

可参考上面源代码安装方式

安装报错

00acef833ac7440abda290b7dd5b5d1b.jpg

由于服务器自带的是python2,存在python 3 和 python 2 两个版本共存的情况

pip 版本错了,换成 pip3 就OK了

PyPI 服务器搭建

https://www.cnblogs.com/special-li/p/9149573.html

该项没有研究

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值