使用pypi-server搭建简单的pypi源(代码片段)

不写日记 不写日记     2022-11-12     787

关键词:

pypiserver 是一个最基本的PyPI服务器实现, 可以用来上传和维护python包. 本文介绍 pypiserver 在ubuntu上的基本安装, 配置和使用.

1. 基本安装和使用

1.1 安装和启动

pypiserver 可以在Python 2或者Python 3下运行. 使用pip就可以安装:

pip install pypiserver

启动 pypiserver 使用以下命令:

pypi-server

在没有显示指定任何启动参数的时候, pypiserver 是使用 ~/packages 来保存Python包, 同时监听8080端口来提供PyPI服务.

1.2 上传Python包

此时, 在创建 ~/packages 目录后, 可以将Python包上传到此目录下. 比如, 有一个Python项目叫 demo , 它的 setup.py 文件内容如下:

from setuptools import setup

setup(
    name=\'demo\',
    version=\'0.0.1\',
    packages=[\'demo\']
)

在项目根目录下执行以下命令来生成Python代码分发包:

python setup.py sdist

执行完上面这条命令后, 可以在项目下的 dist 目录找到分发包 demo-0.0.1.tar.gz. 将分发包上传到 ~/packages 目录下, 接下来就可以访问 pypiserver 上的Python包了.

1.3 安装 pypiserver 上的Python包

在安装和启动 pypiserver 后, 可以通过浏览器访问http://localhost:8080可以访问 pypiserver 的默认欢迎页:

访问http://localhost:8080/simple/demo则可以看到刚上传的_demo-0.0.1.tar.gz_包

1.3.1 pip

在本地环境中, 可以使用 pipindex-url 参数来访问 pypiserver 上的Python包:

# pip search -i http://localhost:8080 demo
# pip install -i http://localhost:8080 demo

1.3.2 easy_install

同样也可以使用 easy_install 来访问 pypiserver :

# easy_install -i http://localhost:8080/simple demo

2. 远程上传项目包

如果希望通过python setup.py upload命令将本地项目代码上传到PyPI服务器, 可以通过以下步骤来完成.

2.1 无密码上传项目包

默认情况下, pypiserver 的上传操作是密码保护的, 不过可以通过以下启动参数来关闭密码保护:

pypi-server -P . -a .

上述命令中的-P参数用来指定密码文件, -a用来指定需要密码保护的操作. 当这两个参数同时指定为.时, 表示所有的操作都不需要密码保护.

此时, 就可以在Python项目的根目录下, 执行远程安装命令来上传包. 比如在本地项目中, 执行以下命令:

python setup.py sdist upload -r http://localhost:8080

此时, upload 命令仍然会提示输入密码, 此时直接回车确认就可以了.

2.2 使用密码保护PyPI源

当希望使用密码来控制Python包的上传操作的时候, 需要使用Apache htpasswd 文件.

pypiserver 需要 passlib 包来读取 htpasswd 文件. 使用以下命令来安装 passlib :

pip install passlib

要生成 htpasswd 文件, 需要安装 apache2-utils 工具包. 在Ubuntu上使用以下命令安装:

apt-get install -y apache2-utils

接下来就可以用 htpasswd 命令来生成密码文件. 假设密码文件路径为 /root/.pypipasswd , 第一次生成密码文件的命令如下:

htpasswd -c /root/.pypipasswd sam

上述命令中的最后一个参数sam是用户名, 执行命令后, 会提示输入密码.

当需要在已有的密码文件中添加新的用户名和密码时, 不能再使用-c参数, 否则会将已有的数据覆盖. 比如, 要在上一步生成的文件里添加一个新用户名 john :

htpasswd /root/.pypipasswd john

接下来就可以使用密码文件来控制上传操作了. 当启动 pypiserver 时, 通过-P参数来指定所要使用的密码文件. 默认情况下, 上传操作会需要密码验证, 如果希望其他操作也需要密码验证, 可以使用-a参数. 具体-a参数的使用可以查阅_pypiserver_的启动命令帮助, 这里不再展开.

pypi-server -P /root/.pypipasswd

接下来, 在需要上传Python包的系统中, 需要配置Distutils来指定上传操作所需要的用户名和密码.

创建或者修改 ~/.pypirc 文件, 文件需要以下内容:

[distutils]
index-servers = localhost

[localhost]
repository: http://localhost:8080
username: sam
password: 123456

配置中的[localhost] section就是 pypiserver 的地址和用户名密码信息. index-servers值中的localhost就指定了名为localhost的section. 接下来, 当我们向名为 localhost 或者地址为 http://localhost:8080 的PyPI源上传Python包时, 用户名 sam 和密码 123456 就会被用来验证操作权限:

python setup.py sdist upload -r localhost

3. 其他配置

3.1 指定监听端口

默认情况下 pypiserver 监听8080端口, 我们可以通过-p参数来指定期望的端口:

pypi-server -p 9090

3.2 指定包目录

默认情况下 pypiserver 使用_~/packages_ 目录来读取和保存Python包. 我们可以使用-P参数来修改:

pypi-server -P /opt/pypiserver/packages

3.3 请求转发

当请求的Python包, 在本地 pypiserver 上没有找到时, 它会将请求转发到外部PyPI源, 默认为 https://pypi.doubanio.com/simple . 对于国内使用来说, 可以通过 --fallback-url 参数将转发目的地址设置为豆瓣源:

pypi-server --fallback-url https://pypi.doubanio.com/simple

4. 相关资源

pip使用豆瓣镜像源(代码片段)

pip使用豆瓣的镜像源豆瓣镜像地址:https://pypi.douban.com/simple/虽然用easy_install和pip来安装第三方库很方便他们的原理其实就是从Python的官方源pypi.python.org/pypi下载到本地,然后解包安装.不过因为某些原因,访问官方的pypi不稳定,很慢,... 查看详情

pypi使用国内源(代码片段)

通过几次pip的使用,对于默认的pip源的速度实在无法忍受,于是便搜集了一些国内的pip源,如下:阿里云http://mirrors.aliyun.com/pypi/simple/中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/豆瓣(douban)http://pypi.douban.com/simple/清华大学http... 查看详情

pypi可以使用的几个国内源

参考阿里云http://mirrors.aliyun.com/pypi/simple/中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/豆瓣(douban)http://pypi.douban.com/simple/清华大学https://pypi.tuna.tsinghua.edu.cn/simple/中国科学技术大学http://pypi.mirrors.ustc.edu.cn/simple/ 查看详情

pypi设置安装源

 每次使用pip安装的时候使用-i命令设置安装源例pipinstalldjango  为pipinstall-ihttp://pypi.douban.com/simple/django   设置pip的默认源 更改配置文件方式(无则新建): vim~/.config/pip/pip.conf    [global]index-url=https://pypi.douban.... 查看详情

pip使用豆瓣的镜像源(代码片段)

豆瓣镜像地址:https://pypi.douban.com/simple/虽然用easy_install和pip来安装第三方库很方便它们的原理其实就是从Python的官方源pypi.python.org/pypi下载到本地,然后解包安装。不过因为某些原因,访问官方的pypi不稳定,很慢甚至有些还时... 查看详情

pypi使用国内源

阿里云 https://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣(douban) https://pypi.douban.com/simple/ 清华大学 https://pypi.tuna.tsinghua.edu. 查看详情

pypi使用国内源(代码片段)

阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣(douban) http://pypi.douban.com/simple/ 清华大学 https://pypi.tuna.tsinghua.edu.cn 查看详情

pip使用国内源

常用国内的pip源如下:阿里云http://mirrors.aliyun.com/pypi/simple/中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/豆瓣(douban)http://pypi.douban.com/simple/清华大学https://pypi.tuna.tsinghua.edu.cn/simple/中国科学技术大学http://p 查看详情

搭建使用与维护私有pypi仓库(代码片段)

...PyPi仓库安装依赖包pypiserver要搭建PyPi仓库,我们需要使用pypiserver库,这是一个最基本的PyPI服务器实现库,可以启动一个用来上传和维护Python包的服务器。通过pipinstallpypiserver命令安装pypiserver库,该库在Python2x或者... 查看详情

pip配置国内镜像源——最新详尽版(代码片段)

...i.hustunique.com/山东理工大学:http://pypi.sdutlinux.org/临时使用临时使用某个镜像源下载使用pip的参数-i指定镜像源的地址,例如想在阿里云镜像源下载Pillow包pipinstall-ihttp://mirrors.aliyun.co 查看详情

pypi设置国内镜像源(代码片段)

... 将pypi默认下载的镜像源修改为国内镜像源(以windows下使用豆瓣源为例),可采用如下方式:在C盘用户目录下新建pip目录,创建文件pip.ini,并将以下内容粘贴到pip.ini中即可:[global]index-url=https://pypi.doubanio.com/simple/[install]trusted-... 查看详情

pip安装时使用豆瓣源

 国内源:清华:https://pypi.tuna.tsinghua.edu.cn/simple阿里云:http://mirrors.aliyun.com/pypi/simple/中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/华中理工大学:http://pypi.hustunique.com/山东理工大学:http://pypi.sdutli 查看详情

更改pip源

将pip源更换到国内镜像用pip管理工具安装库文件时,默认使用国外的源文件,因此在国内的下载速度会比较慢,可能只有50KB/s。幸好,国内的一些顶级科研机构已经给我们准备好了各种镜像,下载速度可达2MB/s。其中,比较常用... 查看详情

让pip源使用国内镜像,提升下载速度和安装成功率。

...载速度,还可以提高安装成功率。国内源:新版ubuntu要求使用https源,要注意。清华:https://pypi.tuna.tsinghua.edu.cn/simple阿里云:http://mirrors.aliyun.com/pypi/simple/中国科技大学https://pypi.mirrors.ustc.edu.cn/simple/华中理工大学:http://pypi.hustun... 查看详情

pycharm使用国内源下载package

PyCharm在下载package时太慢或时常下载失败报Availablepackagesnothingtoshow。解决方案打开settrings找到项目对应的Project,点击右侧的+号点击ManageRepositories点击链接按钮,编辑国内源:清华:https://pypi.tuna.tsinghua.edu.cn/simple阿里云:http://mir... 查看详情

清华pypip国内源(代码片段)

pypi镜像使用帮助pypi镜像每5分钟同步一次。临时使用pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplesome-package注意,simple 不能少,是 https 而不是 http设为默认升级pip到最新的版本(>=10.0.0)后进行配置:pipinstallpip-Upipconfigset... 查看详情

pip安装库时临时指定豆瓣源

参考技术A国内的pythoner强烈建议使用豆瓣的pypi源使用方法:使用很简单,通过-i指定源的地址就可以了 查看详情

更换(pypi)pip源到国内镜像(代码片段)

...术大学http://pypi.mirrors.ustc.edu.cn/simple/若担心安全问题,请使用Https加密源修改源的方法(1)临时修改并使用(适用于Linux、Windows、Mac)可以在使用pip的时候在后面加上-i参数,指定pip源pipinstallrequests-ihttps://pypi.tuna.tsinghua.edu.cn/simp... 查看详情