Python包的管理可以通过Python 自带的管理 工具,例如:package-autoremove,package-list-packages, package-install 等,使用起来也非常方便。但是有些包是没有的。

而PyPA 推荐使用的是pip 来管理 Python 包。Pip 就像CentOS / RHEL 中的yum 一样。可以很方便的对Python 包进行管理。可以去pip 查找自己感兴趣的程序,或者做为贡献者提供Projects.

3.1 PyPA

PyPA (Python Packaging Authority) 是一个管理Python 相关包方面的各项工程的工作组。
他们把这些工程放在Github 或者 bitbucket 上。通过pypa-dev 和 distutils-sig 讨论相关问题。

PyPA 推荐使用pip 进行Python 包管理。

通过以下命令来安装Pip。

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

更多内容,请查看在 PYPI 查找pip,然后在相关的文档中查看更多内容。

pip参数说明:

# pip --help

Usage:
pip <command> [options] Commands:
install 安装包.
uninstall 卸载包.
freeze 按着一定格式输出已安装包列表
list 列出已安装包.
show 显示包详细信息.
search 搜索包,类似yum里的search.
wheel Build wheels from your requirements.
zip 不推荐. Zip individual packages.
unzip 不推荐. Unzip individual packages.
bundle 不推荐. Create pybundles.
help 当前帮助. General Options:
-h, --help 显示帮助.
-v, --verbose 更多的输出,最多可以使用3次
-V, --version 现实版本信息然后退出.
-q, --quiet 最少的输出.
--log-file <path> 覆盖的方式记录verbose错误日志,默认文件:/root/.pip/pip.log
--log <path> 不覆盖记录verbose输出的日志.
--proxy <proxy> Specify a proxy in the form [user:passwd@]proxy.server:port.
--timeout <sec> 连接超时时间 (默认15秒).
--exists-action <action> Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.
--cert <path> 证书.

3.2 本地化PyPA

有些时候,在一些环境中,网络连接受到限制,不能连接外网。而这时,我们又需要安装Python的各种包。 自行定制pip 源是最好的方式。

主要操作包括:安装pip2pi 工具和nginx. 然后创建仓库,索引,修改nginx 和Pip 的配置。

本文的示例,全部以服务器不可连接公共网络为前提。

3.2.1 安装pip3

在页面 https://pypi.org/project/pip/#files 上下载Pip 的安装文件.这里没有使用whl包。 在正式安装pip3 之前,还要安装另外一个依赖包:setuptools。

  • setuptools

    下载setuptools:
    下面页面为:https://pypi.org/project/setuptools/#files 
    以root用户解压安装:

    unzip setuptools-xx.x.x.zip
    cd setuptools-xx.x.x/
    python3 setup.py build
    python3 setup.py install
  • 安装pip3 将pip-XX.X.tar.gz 上传至服务器。然后解压安装:

    tar -xzvf pip-xx.x.tar.gz
    cd pip-xx.x/
    python3 setup.py install

3.2.2 安装pip2pi

  • 无外网连接 到github 下载pip2pi,下载的文件名应为:pip2pi-master.zip ,将此文件上传到内网服务器,并解压, 得到路径<path>/pip2pi 。 执行如下命令进行安装:

    cd pip2pi
    python3 setup.py install
  • 有外网连接

    git clone https://github.com/wolever/pip2pi.git
    cd pip2pi
    python3 setup.py install

3.2.3 安装nginx

其实安装tomcat 也可以的。主要用于提供网络服务。
在安装nginx 之前,需要先安装pcre 以开启http_rewrite_module,如果不打开此功能,也可不下载pcre. 下面页面为:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

nginx 官网下载地址. 选择稳定版本下载。然后上传至服务器。然后解压安装。

示例如下:

# 如果服务器可以连接外网,使用如下命令下载
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-x.xx.zip
wget http://nginx.org/download/nginx-x.xx.x.tar.gz
# pcre 可安装,也可以不安装,下面是安装命令
unzip pcre-x.xx.zip
cd pcre-x.xx/
./configure
make && make install
# 下面是安装nginx命令
tar -xzvf ./nginx-x.xx.x.tar.gz
cd nginx-x.xx.x.tar.gz ./configure --with-pcre=../pcre-x.xx/ --prefix=<安装路径> --with-openssl=/usr/lib64/
make && make install

3.2.4 配置nginx

安装路径下conf路径,配置文件(nginx.conf)存放在此路径中. 主要需要配置的内容是server{} 部分。

  • 创建路径 安装nginx时,指定了安装路径"~/nginx". 在此路径中创建我们的web主路径:

    cd ~/nginx
    mkdir -p pypi.self.cn
  • 配置nginx参数

    server {
    listen 9080; # 默认80端口,root用户才能启用1024以下的端口号。如果是非root用户启动会报
    server_name pypi.self.cn;
    charset utf8 # 字符集配置
    #charset koi8-r; #access_log logs/host.access.log main; location / {
    root pypi.self.cn; # 此为相对路径,写相对路径时,默认是在安装路径下查找。
    # 相应的路径也必须存在。
    autoindex on;
    autoindex_exact_size off; #显示文件的大小
    autoindex_localtime on; #显示文件时间
    #limit_rate_after 5m; #5分钟后下载速度限制为200k
    limit_rate 200k;
    index index.html index.htm;
    }

    到现在,我们私有的pip 源已经配置好了。下一步需要做的,就是把我们需要的包及其依赖包下载并上传到 pypi.self.cn 这个路径中去。

    • 注意事项:: nginx默认监听80端口,root用户才能启用1024以下的端口号。如果是非root用户启动会报 nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)

3.2.5 下载模块及依赖包

下载模块时pip2tgz 会将依赖的包一起下载。示例如下:

pip2tgz ~/nginx/pypi.self.cn/ docx==0.2.4
Collecting docx==0.2.4
File was already downloaded /home/.halberd/nginx/pypi.self.cn/docx-0.2.4.tar.gz
Collecting lxml (from docx==0.2.4)
File was already downloaded /home/.halberd/nginx/pypi.self.cn/lxml-4.2.5-cp37-cp37m-manylinux1_x86_64.whl
Collecting Pillow>=2.0 (from docx==0.2.4)
File was already downloaded /home/.halberd/nginx/pypi.self.cn/Pillow-5.3.0-cp37-cp37m-manylinux1_x86_64.whl
Successfully downloaded docx lxml Pillow
You are using pip version 10.0.1, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command. Done. 0 new archives currently saved in '/home//nginx/pypi.self.cn/'. $ll
-rw-r--r-- 1 halberd root 54925 Nov 16 18:20 docx-0.2.4.tar.gz
-rw-r--r-- 1 halberd root 5842531 Nov 16 18:20 lxml-4.2.5-cp37-cp37m-manylinux1_x86_64.whl
-rw-r--r-- 1 halberd root 1976365 Nov 16 18:20 Pillow-5.3.0-cp37-cp37m-manylinux1_x86_64.whl
  • 下载单个模块

    pip2tgz <文件存放路径> <模块名>==<版本号>
    
  • 下载多个模块 下载多个模块时,需要将模块信息写入到文本文件中,pip2tgz通过读取该文本文件逐一下载。

    pip2tgz <文件存放路径> -r <文件名>
    

    文件示例:

    cat modulelist.txt
    docx==0.2.4
    wheel==0.32.2
    cx_Oracle==7.0.0
    PyMongo==3.7.2
    psycopg2==2.7.6.1

    命令示例:

    pip2pi ./ -r ../modulelist.txt
    

3.2.6 上传作为源的依赖包

这些上传的依赖包,要从其他地方先用pip2tgz 下载好,不然,无法解决依赖关系。
所有相关的包,要上传到pypi.self.cn 这个路径中。因为这个路径是我们配置的nginx 访问的根路径。包括simple 文件夹一起上传。

3.2.7 建立索引文件

如果用其他方式将包下载,是没有simple 文件夹的,这个文件夹里保存着索引文件,这时 可以使用dir2pi命令,手动建立索引:

dir2pi ~/nginx/pypi.self.cn/

3.2.8 验证可用性

这里我们尝试使用私有源安装wheel 软件包。安装时注意使用root用户进行安装。

# pip install wheel -i http://10.1.194.23:9080/simple/ --trusted-host 10.1.194.23
Looking in indexes: http://10.1.194.23:9080/simple/
Collecting wheel
Downloading http://10.1.194.23:9080/simple/wheel/wheel-0.32.2-py2.py3-none-any.whl
Installing collected packages: wheel
Successfully installed wheel-0.32.2

3.2.9 如何使用私有源

  • 指定私有源的方法:

    pip install -i wheel
    或者
    pip install --index-url=http://pypi.self.cn/simple wheel
  • 配置私有源为默认 在linux下创建~/.pip/pip.conf文件. 
    如果是windows环境,创建:%HOMEPATH%\pip\pip.ini.
    文件内容如下

    [global]
    index-url = http://10.1.194.23:9080/simple
    [install]
    trusted-host = 10.1.194.23

    这配置配置以后,就可以直接使用pip install 进行安装了。

Python 包管理(PYPA)的更多相关文章

  1. 转: CentOS 6.4安装pip,CentOS安装python包管理安装工具pip的方法

    from: http://www.linuxde.net/2014/05/15576.html CentOS 6.4安装pip,CentOS安装python包管理安装工具pip的方法 2014/05/ ...

  2. CentOS 6.4安装pip,CentOS安装python包管理安装工具pip的方法

    CentOS 6.4安装pip,CentOS安装python包管理安装工具pip的方法如下: 截至包子写本文的时候,pip最新为 1.5.5 wget --no-check-certificate h ...

  3. linux软件管理之python包管理

    Python包管理 ====================================================================================python ...

  4. 【Python系列】Python包管理器pip

    缘起 这段时间忙着给朋友搞事,忙了好长一段时间,木有写博客很长时间了.之间做了两个东西,一个是邮件自动发送脚本,一个是数据处理软件.其中,在做数据处理软件的时候使用到了非Python系统库,是两个第三 ...

  5. Python包管理工具小结

    此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 作为一名接触Python有一段时间的初学者,越来越体会到Python的方便之处,它使人能更 多的关注业务本身 ...

  6. python 包管理工具 pip 的配置

    近几年来,python的包管理系统pip 越来越完善, 尤其是对于 windows场景下,pip大大改善了python的易用性. https://www.cnblogs.com/yvivid/p/pi ...

  7. python 包管理工具

    python 包管理工具 Python当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils,显得较为混乱. 而将来的工具链组合 ...

  8. Python 包管理工具解惑

    Python 包管理工具解惑 本文链接:http://zengrong.net/post/2169.htm python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到 ...

  9. python包管理-distutils,setuptools,pip,virtualenv等介绍

    python包管理-distutils,setuptools,pip,virtualenv等介绍 对于每个编程语言来说打包和发布开发包往往非常重要,而作为一个编程者能够快速容易的获得并应用这些由第三方 ...

随机推荐

  1. 关系型数据库 VS 非关系型数据库

    一.关系型数据库? 1.概念 关系型数据库是指采用了关系模型来组织数据的数据库.简单来说,关系模式就是二维表格模型. 主要代表:SQL Server,Oracle,Mysql,PostgreSQL. ...

  2. luogu4055 游戏 (二分图博弈)

    考虑对非障碍的点黑白染色然后做二分图最大匹配,那么有结论,先手必胜当且仅当不是完美匹配,而且可以放的点是那些可以不匹配的点 从非匹配点开始走,后手只能走到匹配点,于是先手就可以走匹配边.由于不能走走过 ...

  3. Multi-View 3D Reconstruction with Geometry and Shading——Part-2

    From PhDTheses Multi-View 3D Reconstruction with Geometry and Shading 我们的主要目标是只利用图像中的信息而没有额外的限制或假设来得 ...

  4. linux查看主板型号、CPU、显卡、硬盘等信息

    系统 uname -a # 查看内核/操作系统/CPU信息 head -n 1 /etc/issue # 查看操作系统版本 cat /proc/cpuinfo # 查看CPU信息 hostname # ...

  5. 爬虫四大金刚:requests,selenium,BeautifulSoup,Scrapy

    一.简介爬虫 1.什么是爬虫 #1.什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样. #2.互联网建立的目的? 互联网的核心价值在于数据的共 ...

  6. ant 执行jmeter

    构建-invoke ant -properties jmeter.home=/home/userapp/apps/apache-jmeter-5.0report.title=kyh_register_ ...

  7. Linux性能优化实战:系统的swap变高(09)

    一.实验环境 1.操作系统 root@openstack:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu ...

  8. Apicloud学习第四天

    apicloud存储机制,添加和获取存储的数据 $api.setStorage('currentCity', cityList[i_]); $api.getStorage('currentCity') ...

  9. javascript 获取字符递增

    比如A->B,AA->AB,Z->AA 参考https://blog.csdn.net/xiaotao2004/article/details/75096607 C#版本,改写为ja ...

  10. ArcGIS Editor for Open Street Map 10.X for Desktop下载地址

    ArcGIS Editor for Open Street Map可用于导入从OSM下载的地图,但并不是ArcGIS自带的工具,需要从官网下载,虽然文件很小,但下载速度较慢,易断开. 在此为找不到或不 ...