pip 通过 requirements 文件,批量下载python包,批量离线安装python包

您所在的位置:网站首页 pip导出环境 pip 通过 requirements 文件,批量下载python包,批量离线安装python包

pip 通过 requirements 文件,批量下载python包,批量离线安装python包

2023-08-22 10:55| 来源: 网络整理| 查看: 265

本文概览

本文主要讲述 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查看本机python 可支持的wheel版本[root@xxx dir]python3 >>>import pip >>>print(pip.pep425tags.get_supported()) [('cp36', 'cp36m', 'manylinux1_x86_64'), ('cp36', 'cp36m', 'linux_x86_64'), ('cp36', 'abi3', 'manylinux1_x86_64'), ('cp36', 'abi3', 'linux_x86_64'), ('cp36', 'none', 'manylinux1_x86_64'), ('cp36', 'none', 'linux_x86_64'), ('py3', 'none', 'manylinux1_x86_64'), ('py3', 'none', 'linux_x86_64'), ('cp36', 'none', 'any'), ('cp3', 'none', 'any'), ('py36', 'none', 'any'), ('py3', 'none', 'any'), ('py35', 'none', 'any'), ('py34', 'none', 'any'), ('py33', 'none', 'any'), ('py32', 'none', 'any'), ('py31', 'none', 'any'), ('py30', 'none', 'any')] 名称对应名称解释distributionmysql_connector包名version2.1.6版本bulid tag备注标签可省略python-tagcp36表示 cpython 3.6 版本abi-tagcp36mabi Application Binary Interface 应用程序二进制接口platformwin_amd64platform 还可以是 anywin32 , 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 方法下载,很有可能安装时候会报错 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 包的可参考上面源代码安装方式

安装报错

由于服务器自带的是python2,存在python 3 和 python 2 两个版本共存的情况pip 版本错了,换成 pip3 就OK了 PyPI 服务器搭建 https://www.cnblogs.com/special-li/p/9149573.html 可以通过 pypi-server 或者开源镜像仓库Nexus实现Nexus 官网 https://www.sonatype.com/nexus/repository-osspypi-server https://github.com/pypiserver/pypiserver


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3