• 讲一讲Python如何在本地打包分发代码
  • 发布于 2个月前
  • 164 热度
    1 评论
当我们一个团队开发一个项目的时候,需要的Python第三方包基本是固定的,每次搭建新环境都费时费力。
如果我们能像pip一样安装多好。
公网pypi很简单,网上太多。
现在讲一讲如何本地打包分发代码。
如果您想要从有别于PyPI的其他源安装包(也就是说,如果您的包是 专门 (proprietary)的), 您可以通过为自己开启一个服务器来建立一个这样的源,这个服务器应该开在您想共享的包所在位置 的文件夹下。

作为例子,如果您想要共享一个叫做 MyPackage.tar.gz 的包,并且假设您的文件 结构是这样的:
archive
MyPackage
MyPackage.tar.gz
打开您的命令行并且输入:
$ cd archive
$ python -m SimpleHTTPServer 9000
这运行了一个简单的http服务器,其监听端口9000并且将列出所有包(比如 MyPackage)。现在 您可以使用任何Python包安装器从您的服务器中安装 MyPackage 。若使用Pip,您可以这样做:
$ pip install --extra-index-url=http://127.0.0.1:9000/ MyPackage
您的文件夹名字与您的包名相同是 必须 的。我曾经被这个坑过一次。但是如果您觉得 创建一个叫做 MyPackage 的文件夹然后里面又有一个 MyPackage.tar.gz 文件 是 多余 的,您可以这样共享 MyPackage:
$ pip install  http://127.0.0.1:9000/MyPackage.tar.gz
pypiserver
Pypiserver 是一个精简的PyPI兼容服务器。 它可以被用来让一系列包通过easy_install与pip进行共享。它包含一些有益的命令,诸如管理 命令( -U),其可以自动更新所有它的包到PyPI上的最新版。

第一步安装pip2pi
pip install pip2pi
或者:
git clone https://github.com/wolever/pip2pi
cd pip2pi
python setup.py install
第二步 配置本机的pip源 编辑C:/Users/Administrator/pip/pip.ini 文件(内容如下),没有就创建一个,这里是豆瓣
[global] 
timeout=60 index-url=http://pypi.douban.com/simple
创建一个路径,来存放包
mkdir /opt/python/soft/xxx
第三步 同步软件包
跟着 pip2pi 的README文件使用pip2tgz 与 dir2pi命令
pip2tgz packages/ YourPackage (or pip2tgz packages/ -r requirements.txt)
dir2pi packages/
单独下载某个软件包
pip2tgz /opt/python/soft/pypi/XXX/  routes==1.12.3
批量下载软件包:
pip2tgz /opt/python/soft/pypi/XXX/ -r list requirements.txt
建立索引:
dir2pi /opt/python/soft/pypi/XXX/
更新索引:
pip2acmeco uliweb=0.2.6pip2acmeco -r list requirements.txt

四、结合nginx配置web端:

Nginx服务器添加虚拟主机配置:
server {
listen 80;
server_name pypi.xxx.com
root /opt/python/soft/xxx.com;
location /{
autoindex on;
autoindex_exact_size off; #显示文件的大小
autoindex_localtime on; #显示文件时间#limit_rate_after 5m; 
#5分钟后下载速度限制为200k
limit_rate 200k;
}
access_log logs/pypi.xxx.log main;
}

至此已经配置完了自己的私有pypi了 需要什么软件包的时候,自己拿到放到自己的pypi里面就可以了;

同理也可以把自己的项目打包放进去。

五、如何使用pypi源:

打个比方安装下AAABBB吧
pip install --index-url=http://pypi/simple/ AAABBB
或者
pip install -i AAABBB`

用户评论