[Pipy]利用pip2pi搭建本地pypi源

时间:2021-06-08 12:37:18

当我们一个团队开发一个项目的时候,需要的Python第三方包基本是固定的,每次搭建新环境的时候总是因为各种内外网,https问题花费大量的时间来安装运行环境。 所以搭建一个本地的,小巧的,只包含需要的package的源,或者cache都行,对于搭建环境可以节省很多时间。


这里使用的是pip2pi,可以指定一个下载源,pypi官方或者是国内的都行,把需要包同步到本地然后在本地搭建一个web服务,局域网内所有的用户配置一下pip源之后就可以快速的搭建python环境了。


实验环境为window7


第一步安装pip2pi

1
pip
install pip2pi


第二步 配置本机的pip源  编辑C:\Users\Administrator\pip\pip.ini 文件(内容如下),没有就创建一个,这里是豆瓣

1
2
3
[global]
timeout
60
index-url
= http:
//pypi.douban.com/simple


第三步 同步软件包 

1 单个同步

#pip2tgz /pypi name==version    /pypi是存放这些包的文件夹 这里使用的是E:\pipy

1
2
3
4
5
6
7
8
9
10
E:\dev1\nirvana>pip2tgz
E:\pipy simplejson
Downloading/unpacking
simplejson
   Downloading simplejson- 3.5 . 3 .tar.gz (70kB): 70kB downloaded
Saved
e:\pipy\simplejson-
3.5 . 3 .tar.gz
Running
setup.py egg_info 
for  package  simplejson
 
Successfully
downloaded simplejson
Cleaning
up...
 
Done.  1  new  archives currently saved  in  'E:\\pipy' .

此时在pipy文件夹中就能看到simplejson的包了


2 pip导出文件同步

#pip2tgz /var/www/packages/ -r requirements.txt foo==1.2 baz/

这里使用的requirement.txt 文件内容为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Django== 1.5 . 5
MySQL-python== 1.2 . 3
amqp== 1.0 . 12
anyjson== 0.3 . 3
billiard== 2.7 . 3.31
celery== 3.0 . 19
django-celery== 3.0 . 17
django-kronos== 0.3
httplib2== 0.8
kombu== 2.5 . 12
python-dateutil== 2.1
pytz==2013b
reportlab== 2.7
six== 1.3 . 0
wsgiref== 0.1 . 2
xlwt== 0.7 . 5

执行

1
pip2tgz
E:\pipy -r requirement.txt

把所有的包下载下来,这里会自动安装(有点奇怪),linux下执行正常下载,但总是因为某些编译问题或者包版本过期的请问发生异常无法往下进行,这个比较烦人


第三步:创建更新索引(整个索引就是根据目录下的包生成一个网页文件,后续搭建web服务就可以直接用pip安装了)

对整个目录建立索引

1
E:\dev1>dir2pi
E:\pipy


更新索引,对单个软件或这是list

1
2
pip2acmeco
name
pip2acmeco
-r requirements.txt



可以使用apache或者nginx来搭建本地的web服务,然后其他机器更新pip.ini文件就可以使用自己搭建的源了。

具体可以参考:搭建本地pypi源方法   配置pipy源方法