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

遇到的问题

需要从Django 换到 Flask,因为生产环境是完全隔离的,因此需要为生产环境安装python包

  1. 主要问题,我如何知道Flask 环境需要哪些包
  2. 如何离线下载这么多包
  3. 如何批量离线安装

古老的方式:
1. pip freeze > requirements.txt # 生成环境
2. 手动去官网把每一个包下到文件夹中
3. 然后将文件夹上传到生产环境中
4. 手动一个一个 pip install 包

推荐方式
1. pip freeze > requirements.txt # 生成环境
2. pip wheel -r requirements.txt -w packages
3. 然后将文件夹上传到生产环境中
4. pip install -r requirements.txt --no-index --find-links=packages # 指定你的文件夹

命令说明

  1. freeze 将依赖关系分析出来并 使用windows 管道符号导入到该文件中
  2. wheel 分析requirements 文件,并将所有包及其依赖包下载为 wheel 格式,通过 w 选项导入 packages 文件夹中
  3. install --find-links 指定离线安装的文件夹,也就是你下载好的包
  4. 注意: --no-index 必须搭配 --find-links 使用
    --no-index¶
    Ignore package index (only looking at –find-links URLs instead).
    

Install local packages 官方说明

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

  1. 首先,将所有包下载到DIR这个目录中

    $ pip download --destination-directory DIR -r requirements.txt

  2. download 命令会查看wheel缓存,然后再去PyPI下载库,但download命令下载的包不会进入wheel缓存,如果你需要wheel 缓存,你可以先执行以下命令

    • 需要注意,该命令可能会报错,因为有些包是源码包,不能被打包成wheel 格式,忽略就好了
      -

    $ pip wheel --wheel-dir DIR -r requirements.txt

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

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

  4. 安装报错

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

pip 文档说明 pip 官方文档

常见问题

  1. 源代码安装步骤

    1. 下载 uwsgi 源码包, Pypi 官网下载
    2. 解压 tar -zxvf uwsgi.tar.gz
    3. 进入目录 cd uwsgi
    4. 使用python 安装 python3 setup.py install
    5. 即可安装成功
  2. 注意生产环境是什么平台,如果是Linux,你需要在虚拟机中下载 wheel包,切记

    1. 包名中有 win ,代表只能在windows 中安装
    2. 没有 win,代表跨平台
  3. 安装时报错

      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 setuptools                                                                                            , tokenize;__file__='/tmp/pip-wheel-e6wqgb6g/Mako/setup.py';f=getattr(tokenize,                                                                                             'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compi                                                                                            le(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
    
    
    1. 问题原因,因为这些包的格式是 tar.gz,也就是源码包,是不可以直接转为 wheel 报的,你需要将这些包从pypi 一个一个下载,解压,进入文件夹然后用 python3 setup install 才能安装
    2. 参考上面源代码安装
  4. wheel 包名 包名官方文档

    1. wheel 包的命名格式为 {distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl 。
    2. 例如 mysql_connector-2.1.6-cp36-cp36m-win_amd64.whl
名称 对应名称 解释
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 表示 跨平台

有关pip 更多讯息,查看PyPi 与 pip

PyPI 服务器搭建

猜你喜欢

转载自blog.csdn.net/weixin_42290927/article/details/88873797