搭建本地pypi仓库
搭建本地pypi仓库
经过一番技术选型, 决定使用pypiserver进行私有化pypi仓库部署。
1. 拉取镜像:
docker pull pypiserver/pypiserver:latest
2. 启动容器:
docker run -p 80:8080 -v ~/.htpasswd:/data/.htpasswd pypiserver/pypiserver:latest run
-p 8080 -P /data/.htpasswd -a "update,download,list" --fallback-url "https://pypi.tuna.tsinghua.edu.cn/simple" packages
其中:
- -p 是指定服务端口
- -P 是指定认证用户及密码文件
- -a 表示update, download, list都需要走认证
- --fallback-url 表示如果找不到包就去指定连接找
3. 可直接通过端口访问web界面
4. 打包上传
打包
python 项目添加setup.py即可打包上传。简易的setup.py如下:
from setuptools import setup, find_packages
setup(
name="项目名称",
version="1.0.0",
description="项目描述",
packages=find_packages(),
install_requires=[
"fastapi>=0.104.0",
"uvicorn[standard]>=0.24.0",
"pydantic>=2.0.0",
],
python_requires=">=3.8",
author="作者",
author_email="邮箱",
url="项目主页, 一般为github",
classifiers=[
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
],
)
接下来源码打包:
python setup.py sdist
二进制打包:
python setup.py bdist
上传
配置.pypirc, 各系统路径如下:
- Linux/macOS: ~/.pypirc
- Windows: %USERPROFILE%.pypirc
内容如下:
[distutils]
index-servers =
local
[local]
repository=http://xxx.xxx.xxx.xxx:8888
username = xxx
password = xxx
执行如下命令python setup.py sdist upload -r local上传
常见问题:
如果报错AssertionError: unsupported schema通常是因为.pypirc路径不对,或是配置不对。
删除包
删除包有两种方式:
- 通过http请求
- 直接删除包中的指定包
此处仅仅介绍http请求方式:
curl --form ":action=remove_pkg" --form "name=包名" --form "version=版本" http://用户名:密码@http://xxx.xxx.xxx.xxx:8888/

浙公网安备 33010602011771号