Windows 环境下基于 nginx 的本地 PyPI 源
Windows 环境下基于 nginx 的本地 PyPI 源的搭建:
1.登录 nginx 官网,下载安装包
下载稳定版,并解压缩。
2.启动 nginx 服务
以管理员身份启动 nginx.exe。
访问 localhost,出现如下页面即证明 nginx 安装并启动成功。
3.安装 pip2pi 工具
pip install pip2pi
4.创建软件包仓库目录
假设创建软件包仓库目录为 C:\Python27\soft\pypi.zsz.net
5.下载软件包并建立索引
下载软件包并建立索引有两种方式,分别如下。
a.使用 pip2tgz 及 dir2pi 命令分开执行
①.下载软件包注意:通过 pip2tgz 命令可以下载对应的软件包,应下载至软件目录仓库下。(1).软件包单个下载
假设下载 celery(3.1.23)版本,则命令如下# pip2tgz C:\Python27\soft\pypi.zsz.net celery==3.1.23
b.使用 pip2pi 命令统一执行(2).软件包批量下载按如下格式编辑软件包列表 requirements.txtFlask==0.11.1Flask-Mail==0.9.1随后,使用如下命令进行批量下载。# pip2tgz C:\Python27\soft\pypi.zsz.net -r requirements.txt②.建立索引注意:通过 dir2pi 命令将目录中的软件包创建索引。为软件包仓库目录 C:\Python27\soft\pypi.zsz.net 创建索引,命令如下。# dir2pi --normalize-package-names C:\Python27\soft\pypi.zsz.net注意:需加入 --normalize-package-names 修饰,这样能格式化命名不符合规范的软件包,使其可以被正常识别。
注意:pip2pi 将会下载所需的软件包,随后为存在的软件包创建索引。
(1).软件包单个下载假设下载 celery(3.1.23)版本,则命令如下
# pip2pi --also-get-source --normalize-package-names C:\Python27\soft\pypi.zsz.net celery==3.1.23注意:需加入 --also-get-source 修饰,除了下载 wheel、eggs 等格式的软件包外,还将下载软件包的源文件,从而确保不同平台上的使用。注意:需加入 --normalize-package-names 修饰,这样能格式化命名不符合规范的软件包,使其可以被正常识别。(2).软件包批量下载
按如下格式编辑软件包列表 requirements.txt
Flask==0.11.1
Flask-Mail==0.9.1
随后,使用如下命令进行批量下载。
# pip2pi --also-get-source --normalize-package-names C:\Python27\soft\pypi.zsz.net -r requirements.txt
注意:需加入 --also-get-source 修饰,除了下载 wheel、eggs 等格式的软件包外,还将下载软件包的源文件,从而确保不同平台上的使用。注意:需加入 --normalize-package-names 修饰,这样能格式化命名不符合规范的软件包,使其可以被正常识别。
6.配置 nginx 服务
在 nginx 的 conf 目录下,修改 nginx.conf。
例如:为了在本机上搭建 PyPI 源,且网站根路径为 C:\Python27\soft\pypi.zsz.net,则 nginx,conf 的内容可类似如下。
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' #日志格式
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
server {
listen 80;
server_name localhost; #服务器名
root C:\Python27\soft\pypi.zsz.net; #网站根目录路径
access_log logs/host.access.log main; #开启登录日志
location / {
autoindex on; #列出整个目录
autoindex_exact_size off; #关闭显示出文件的确切大小
autoindex_localtime on; #显示的文件时间为GMT时间
limit_rate 200k; #限制传输速度为200k
}
}
}
7.重启 nginx 服务
终止 nginx.exe 进程,并重新执行步骤 2。
访问 http://pypi.zsz.net/simple,出现如下页面即证明 PyPI 本地源配置成功。
Windows 环境下基于 nginx 的本地 PyPI 源的使用:
使用类似如下命令,利用本地 PyPI 源安装软件包。注意:其安装方式与利用外部源安装一致,可参考《PyPI 官方第三方库仓库安装工具 pip》。
# pip install --index http://pypi.zsz.net/simple --trusted-host=pypi.zsz.net celery==3.1.23
注意:当配置的源为 http 而非 https 时,需要加入 --trusted-host 描述,确保主机被信任,否则将无法使用本地 PyPI 源安装软件包。
注意:当使用域名解析本地 PyPI 源时,应确保 DNS 解析正确。
Windows 环境下基于 nginx 的本地 PyPI 源软件包的维护:
1.使用 pip2tgz 下载 dir2pi 更新软件包索引目录
a.下载软件包注意:通过 pip2tgz 命令可以下载对应的软件包,应下载至软件目录仓库下。(1).软件包单个下载假设下载 celery(3.1.23)版本,则命令如下# pip2tgz C:\Python27\soft\pypi.zsz.net celery==3.1.23(2).软件包批量下载按如下格式编辑软件包列表 requirements.txtFlask==0.11.1Flask-Mail==0.9.1随后,使用如下命令进行批量下载。# pip2tgz C:\Python27\soft\pypi.zsz.net -r requirements.txtb.更新索引注意:通过 dir2pi 命令将目录中的软件包更新索引。为软件包仓库目录 C:\Python27\soft\pypi.zsz.net 更新索引,命令如下。# dir2pi --normalize-package-names C:\Python27\soft\pypi.zsz.net注意:需加入 --normalize-package-names 修饰,这样能格式化命名不符合规范的软件包,使其可以被正常识别。
2.使用 pip2pi 下载并更新软件包索引目录
注意:pip2pi 将会下载所需的软件包,随后为新增的软件包更新索引。
(1).软件包单个下载
假设下载 celery(3.1.23)版本,则命令如下
# pip2pi --also-get-source --normalize-package-names C:\Python27\soft\pypi.zsz.net celery==3.1.23
注意:需加入 --also-get-source 修饰,除了下载 wheel、eggs 等格式的软件包外,还将下载软件包的源文件,从而确保不同平台上的使用。
注意:需加入 --normalize-package-names 修饰,这样能格式化命名不符合规范的软件包,使其可以被正常识别。
(2).软件包批量下载
按如下格式编辑软件包列表 requirements.txt
Flask==0.11.1
Flask-Mail==0.9.1
随后,使用如下命令进行批量下载。
# pip2pi --also-get-source --normalize-package-names C:\Python27\soft\pypi.zsz.net -r requirements.txt
注意:需加入 --also-get-source 修饰,除了下载 wheel、eggs 等格式的软件包外,还将下载软件包的源文件,从而确保不同平台上的使用。
注意:需加入 --normalize-package-names 修饰,这样能格式化命名不符合规范的软件包,使其可以被正常识别。
3.手动下载并使用 dir2pi 更新软件包索引目录
a.下载软件包手动下载软件包文件,并将其存放至软件包仓库目录下。b.更新索引注意:通过 dir2pi 命令将目录中的软件包更新索引。为软件包仓库目录 C:\Python27\soft\pypi.zsz.net 更新索引,命令如下。# dir2pi --normalize-package-names C:\Python27\soft\pypi.zsz.net注意:需加入 --normalize-package-names 修饰,这样能格式化命名不符合规范的软件包,使其可以被正常识别。