python

Python 如何部署私有 pip 库

2020-04-17  本文已影响0人  ___n

准备工作

部署私有 pip 库需要使用 pypiserver 这个 Python 包,方便快捷,首先我们到部署的服务器上,创建一个存放配置和包的目录,如:/var/www/pypiserver

我们使用了 Docker swarm 来部署,参考了这里的配置:https://github.com/pypiserver/pypiserver/blob/master/docker-compose.yml
以下是我的配置文件:

# /var/www/pypiserver/docker-compose.yml
version: "3.3"
services:
    pypiserver:
        image: pypiserver/pypiserver:latest
        volumes:
            - type: bind
              source: ./packages
              target: /data/packages
            - type: bind
              source: ./auth
              target: /data/auth
        command: -P /data/auth/.htaccess -a update,download,list /data/packages
        ports:
            - "8081:8080" 

从配置可以看出,我们需要在该目录下创建两个目录,一个用来存放 package,一个用来存放用户认证文件,目录结构如下:

.
├── auth
├── docker-compose.yml
└── packages

需要注意 packages 目录要开写权限,否则 docker 无法写入该目录,上传包会失败。

Auth

认证主要是为了从远程上传包的时候安全一点,具体步骤如下:

# 安装依赖
sudo pip3 install passlib 

# 生成 htpass 文件
htpasswd -sc .htaccess your_name # 会 prompt 密码输入,重复两遍一样的 

把上述文件放到 auth 目录即可。

启动

一切就绪后,在 /var/www/pypiserver 目录下运行以下命令,以 docker service 的方式(即 swarm 模式)运行 docker container:

docker stack deploy -c docker-compose.yml pip-server

这样,你的私有 pip 服务就启动了。

上传 Python 包
下一步,假设你本地的开发环境中,已经有了一个自己的 Python 包的源码,接下来就是构建和上传这个包。

# 安装依赖 
pip3 install wheel 
pip3 install -U setuptools # 可能需要升级,否则识别不了某些新的 setup.py 中的字段 

# build package 
python3 setup.py sdist bdist_wheel 

生成的 tar.gz 文件会被放在 dist 目录下。
你可以直接把这个文件放到服务器的 packages 目录,这样直接就可以用了。但是我们觉得开发者可能会频繁改动代码,每次都手动上传并 copy 到那个目录,太麻烦了。
我们准备使用工具从客户端直接上传这个包到 pypiserver。

# 安装上传工具,用于上传你 build 好的 package 到私有库
pip3 install twine 

在上传之前,我们还需要配置一下 ~/.pypirc,这个文件保存了你的 pip 库的路径和鉴权等信息,这样你就不用每次上传时都要输入密码了。
这个文件长成这个样子:

[distutils] 
index-servers = 
  pypi 
  internal 

[pypi] 
username:<your_pypi_username> 
password:<your_pypi_passwd> 

[internal] 
repository: http://your_pipserver:8081 
username: <some_username> 
password: <some_passwd> 

如果你无意把私有包上传到公共仓库,pypi 部分可以删掉。
接下来,运行一下命令就可以上传你的包了:

twine upload -r internal ./dist/yourpackage-0.0.1.tar.gz

会出现一个进度条,等走完了就大功告成了。

从私有库安装

运行下面命令即可安装

sudo pip3 install --trusted-host yourserver \
    --extra-index-url http://youruser:yourpass@yourserver:8081/simple \
    yourpackage 

注意事项:

上一篇 下一篇

猜你喜欢

热点阅读