pip 离线安装

离线安装适用于网络有问题的环境、inbound 入口被限制等情况。

Wheel 包不适配

Wheel 包的名称含义

distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl -- 来自 https://www.python.org/dev/peps/pep-0425/#use

例子:greenlet-0.4.12-cp27-cp27m-manylinux1_x86_64.whl,这里省略了 {python tag}

平台不适配

由于默认情况下,wheel 包的平台是运行 pip download 命令 的平台,所以可能出现平台不适配的情况。比如在 MacOS 系统下得到的 pymongo-2.8-cp27-none-macosx_10_10_intel.whl 就不能在 linux_x86_64 安装。

很自然地,我们会想到去更改 pip download 生成的 wheel 包对应的平台。依照官方的例子

$ pip download     --only-binary=:all:     --platform linux_x86_64     --python-version 33     --implementation cp     --abi cp34m     pip>=8
-- 来自 https://pip.pypa.io/en/stable/reference/pip_download/#examples

我们可以正常运行。

但是运用以上命令安装多个包时,你会发现很多包都找不到。

$ pip download >     --only-binary=:all: >     --platform linux_x86_64 >     --python-version 33 >     --implementation cp >     --abi cp34m >     tornado
Collecting tornado
  Could not find a version that satisfies the requirement tornado (from versions: )
No matching distribution found for tornado

我猜测是对应的项目没有提供符合条件的二进制包。

Abi tag 不适配

查看 Python 支持的 tag

目标机器

$ python -c "from pip import pep425tags;print(pep425tags.supported_tags)"
[('cp27', 'cp27m', 'manylinux1_x86_64'), ('cp27', 'cp27m', 'linux_x86_64'), ('cp27', 'none', 'manylinux1_x86_64')...]

打包机器

[('cp27', 'cp27mu', 'manylinux1_x86_64'), ('cp27', 'cp27mu', 'linux_x86_64'),

如果在是通过 cp27mu 打出的包,那么在目标机器就不能安装,因为目标机器没有 cp27mu。错误信息为 package.whl is not a supported wheel on this platform

解决办法

使用非二进制包安装。

pip download --no-binary=:all: package_name
# --no-binary=:all: 对于包以及包的依赖包,都不使用二进制
# -- 来自 https://pip.pypa.io/en/stable/reference/pip_download/#cmdoption-no-binary

对于下载下来的 tar.gz 文件,可以直接使用 pip install 安装。相比 wheel 包,这种包在安装时会进行编译,所以花费的时间会长一些。

更进一步

使用上面的解决办法有两种情况

  1. 挑出不兼容的包,然后使用下载非二进制包。结果是二进制包和非二进制包混合
  2. 不进行挑选,全部下载非二进制包。由于非二进制包在安装时要进行编译,所以安装时间会更长

最好的情况是提供适配目标机器的二进制包。

  1. 找到与目标机器 Python 环境相同的机器
  2. 下载非二进制包
  3. 在与目标机器相同的环境进行编译

关于第三点,因为

Build a wheel that’s named such that it’s only usable on the platform that it was built on -- 来自 https://packaging.python.org/tutorials/distributing-packages/#platform-wheels

完整步骤

  1. 安装 pip2pipip install pip2pi
  2. 使用 pip2pi 下载并打包。pip2pi packages/ --no-use-wheel -r absolute_path_to/requirements.txt
  3. 压缩 tar zcfv packages.tar.gz packages/
  4. 上传到目标服务器。
  5. 解压 tar zxvf packages.tar.gz
  6. (可选,因为我把 virtualenv 也放入了 requirements.txt 中)安装虚拟环境。pip install --index-url=file://absolute_path_to/packages/simple virtualenv(注意这里的 simple
  7. 创建虚拟环境 virtualenv env
  8. 激活虚拟环境 source env/bin/activate
  9. 安装剩余依赖。pip install --index-url=file://absolute_path_to/packages/simple -r requirements.txt

原文地址:https://www.cnblogs.com/jay54520/p/8330994.html

时间: 2024-10-30 15:47:50

pip 离线安装的相关文章

python使用pip离线安装库

一.前言及环境 1. 场景及整体思路 最近在做一个大数据项目,开发过程中用自己的机子安装了很多库,开发完之后需要部署到客户那边的环境中,但是客户那边的环境是不能联网的,于是就需要离线进行库的安装. 上网搜了一下,大概思路是: 从可以联网电脑导出库的名称到文件: 下载指定库到指定文件夹: 将库名称文件和安装包拷贝到离线环境进行安装 整体流程如下图所示: 整个流程主要使用到库管理工具pip,我用的是python安装完已经存在的pip,没有pip的可自行安装. 2. 环境 win10 64bit py

pip离线安装python包

1 首先在一台能上网的机器上得到python包 1) 新建一个空目录,如 /home/ubuntu/zcy/ss,用来存储下载下来的所需安装包 2)下载安装包:pip install --download /home/ubuntu/zcy/ss pyspark 2 离线安装 1)将/home/ubuntu/zcy/ss下面的文件拷贝到不能上网的机器上,如拷贝到/home/zcy/working/spark目录 2)安装:pip install --no-index --find-links=/h

pip离线安装依赖包

pip安装离线本地包 导出本地已有的依赖包 pip freeze > requirements.txt 将依赖包下载到本地 # 下载到当前目录,指定pip源 pip download -r requirements.txt -d . -i http://mirrors.aliyun.com/pypi/simple/ 创建虚拟环境 # -q 安静的方式创建 # --no-site-packages 不拷贝本地的第三方包,创建干净的虚拟python运行环境 # --python=python3.7

pip离线安装

pip freeze > requirements.txt pip download <packages> pip install --no-index --find-links=<path> -r requirements.txt 原文地址:https://www.cnblogs.com/Peter2014/p/8872018.html

离线下载pip包安装

Host-A 不能上网,但是需要在上面安装python-package 通过另外一台能上网的Host-B主机 1. 下载需要离线安装的Packages 在Host-B上执行如下命令: 安装单个Package $ pip install <package> --download /tmp/offline_packages 安装多个Packages $ pip install --download /tmp/offline_packages -r requirements.txt 2. 将下载好的

玩转 pip 、虚拟环境和安装包,包括在线或离线安装各种package

一 创建虚拟环境C:\Users\Administrator>cd D:\00\pystudyC:\Users\Administrator>d:D:\00\pystudy>python -m venv 03 说明:创建一个叫"03"目录的虚拟环境,执行后,创建目录,生成一堆虚拟环境文件. D:\00\pystudy>cd 03D:\00\pystudy\03>cd scriptsD:\00\pystudy\03\Scripts>D:\00\pystu

linux Python2.7 离线安装pip、numpy、scipy、sklearn等

服务器是离线的,只能离线安装 安装pip 1. 先安装setuptools 下载地址:https://pypi.python.org/pypi/setuptools#downloads 将下载后的文件解压,进入到解压后的文件所在的目录执行命令:python setup.py install 2 安装pip 下载地址:https://pypi.python.org/pypi/pip#downloads 将下载后的文件解压,进入到解压后的文件所在的目录执行命令:python setup.py ins

python使用pip 18以上版本离线安装package

在内网办公环境,常常需要使用离线安装python的软件包. 一般都会先在互联网的电脑上下载,再拷贝到内网办公机器上进行离线安装. 一般来说,我是这样做的: 1.拷贝和外网电脑上版本一致,且32位或64位也一致的python安装包至内网安装. 2.在外网电脑上安装好需要的包 例如: 1 pip install numpy 2 pip install pandas 3.外网打包已安装的包 假设你外网机器上,python安装路径为C:\Program Files\Python37\ 例如想在D:\pa

Linux离线安装pip和numpy

首先说明一下pip在线安装程序会发生什么 例如: 运行pip install numpy 1.pip会先下载与自己机器匹配的wheel安装包 我的是numpy-1.12.1-cp27-cp27mu-manylinux1_x86_64.whl 2.pip会运行如下命令来安装wheel安装包 pip install numpy-1.12.1-cp27-cp27mu-manylinux1_x86_64.whl 3.上面的pip命令会调用wheel命令来安装wheel安装包 wheel unpack n