pip2pi从pip需求中构建一个与PyPI兼容的包仓库
项目描述
pip2pi 从 pip 需求中构建一个与PyPI兼容的包仓库
PyPI可能会中断,包维护者可能会删除旧tar包,下载tar包可能需要很长时间。 pip2pi 通过使维护依赖软件的PyPI兼容仓库变得极其简单来帮助减轻这些问题。
$ pip2pi --help Usage: pip2pi TARGET [PIP_OPTIONS] PACKAGES ... Adds packages PACKAGES to PyPI-compatible package index at TARGET. If TARGET contains ':' it will be treated as a remote path. The package index will be built locally and rsync will be used to copy it to the remote host. PIP_OPTIONS can be any options accepted by `pip install -d`, like `--index-url` or `--no-use-wheel`. For example, to create a remote index: $ pip2pi example.com:/var/www/packages/ -r requirements.txt To create a local index: $ pip2pi ~/Sites/packages/ foo==1.2 To pass arguments to pip: $ pip2pi ~/Sites/packages/ \ --index-url https://example.com/simple \ --no-use-wheel \ -r requirements-base.txt \ -r requirements-dev.txt \ bar==3.1
需求
pip
项目的 requirements.txt 文件(可选,但很有用)
一个HTTP服务器(可选,但很有用)
设置
安装 pip2pi
$ pip install pip2pi
然后创建一个目录,该目录将包含所需包的tar包,最好在您的Web服务器文档根目录下
$ mkdir /var/www/packages/
镜像包
要镜像一个包及其所有依赖项,请使用 pip2tgz
$ pip2tgz packages/ foo==1.2 ... $ ls packages/ foo-1.2.tar.gz bar-0.8.tar.gz
请注意,pip2tgz 直接将包参数传递给 pip,因此可以使用 pip 识别的任何格式指定包
$ cat requirements.txt foo==1.2 http://example.com/baz-0.3.tar.gz $ pip2tgz packages/ -r requirements.txt bam-2.3/ ... $ ls packages/ foo-1.2.tar.gz bar-0.8.tar.gz baz-0.3.tar.gz bam-2.3.tar.gz
构建包索引
一个包含大量 .tar.gz 文件的目录可以使用 dir2pi 命令转换为 PyPI 兼容的“简单”包索引
$ ls packages/ bar-0.8.tar.gz baz-0.3.tar.gz foo-1.2.tar.gz $ dir2pi packages/ $ find packages/ packages/ packages/bar-0.8.tar.gz packages/baz-0.3.tar.gz packages/foo-1.2.tar.gz packages/simple packages/simple/bar packages/simple/bar/bar-0.8.tar.gz packages/simple/baz packages/simple/baz/baz-0.3.tar.gz packages/simple/foo packages/simple/foo/foo-1.2.tar.gz
但这需要很多工作...
如果运行两个命令看起来工作量太大… 不要气馁!pip2pi 命令会为你运行这两个命令… 并且 它将使用 rsync 将新包和索引复制到远程主机!
$ pip2pi example.com:/var/www/packages/ foo==1.2 ... $ curl -I http://example.com/packages/simple/foo/foo-1.2.tar.gz | head -n1 HTTP/1.1 200 OK
但这仍然工作量太大...
不要气馁!你的 shell 的 alias 命令可以帮助你。将以下别名添加到 shell 的运行时配置文件中(提示:~/.bashrc 或类似)
alias pip2acmeco="pip2pi dev.acmeco.com:/var/www/packages/"
现在更新你的包索引将变得非常简单
$ pip2acmeco foo==1.2 -r bar/requirements.txt
使用您的新包索引
要使用新包索引,请将 --index-url= 参数传递给 pip
$ pip install --index-url=http://example.com/packages/simple/ foo
或者,一旦它被镜像,将你的 requirements.txt 文件前缀设置为 --index-url=...
$ cat requirements.txt --index-url=http://example.com/packages/simple/ foo==1.2
无网络服务器
您也可以在离线状态下使用您的包索引
$ pip install --index-url=file:///var/www/packages/simple foo==1.2
一些提示
当通过 python setup.py install 或 python setup.py install 从源安装包时,您可能需要创建一个 setup.cfg 文件,该文件指向您的包索引。以下是 Windows、Linux 或 Mac 文件系统中离线包索引的一些示例
[easy_install] # Windows # index_url = file:///C:/pip2pi/simple/ # Linux # index_url = file:///home/myusername/.pip2pi/simple/ # Mac index_url = file:///Users/myusername/.pip2pi/simple/
注意 file: 后面的三重斜杠 /// - 两个用于协议,第三个用于本地文件系统的根。
关键词
镜像 PyPI
离线 PyPI
创建离线 PyPI 镜像
项目详情
下载文件
下载您平台上的文件。如果您不确定该选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
pip2pi-0.8.2.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 1b8deb40dfcd407a43be0b9c8f3d19013585927d545af9fc01781e2fdee41525 |
|
MD5 | 21a5738cf1158bd1b7279e32e5c8b640 |
|
BLAKE2b-256 | c616034e4cad133d549d1055f276bdde047581fc59cad3ad66ff8e2a86fd6f44 |