通过 Nexus3 搭建 pypi 私服

1. 引言

上一篇日志中,我们详细介绍了如何通过 nexus3 搭建一个 maven 私服。
详解通过 Nexus3.x 搭建 Maven 私服
本文我们来介绍如何通过 nexus3 来搭建一个 python 的 pypi 私服。

2. nexus 配置

打开 nexus。

# 此处有图片

登录管理员账户,创建仓库。

# 此处有图片

我们仍然是有三个选择:

# 此处有图片

他们的区别是:

  1. proxy – 远程仓库的代理,当用户向这个仓库请求一个 artifact,他会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户
  2. hosted – 宿主仓库,用户可以 deploy 到 hosted 中,也可以手工上传构件到 hosted 里,在 central repository 是获取不到的,就需要手工上传到hosted里
  3. group – 仓库组,将上述多个仓库聚合,对用户暴露统一的地址

那么接下来,我们创建一个 hosted 仓库和一个 group 仓库,创建页面配置很简单,这里不赘述了。

# 此处有图片

3. 上传 python 包

3.1. 编写代码

执行:

mkdir helloworld
touch helloworld/init.py
vim helloworld/demo.py

代码非常简单,一个类中包含一个静态方法用于输出 helloworld:

class Demo:
    @staticmethod
    def hello():
        print('helloworld')

3.2. 编写 setup.py

我们创建 setup.py

# coding=utf-8
from setuptools import setup

setup(
    name='helloworld',
    version='1.0',
    author="techlog",
    license="MIT",
    packages=[
        'helloworld'
    ],
    install_requires=[
    ],
    classifiers=[
        "Topic :: Utilities",
        "Topic :: Internet",
        "Topic :: Software Development :: Libraries :: Python Modules"
    ],
)
  • 提示
    具体的 setup.py 的编写规范可以参考:

https://packaging.python.org/tutorials/distributing-packages/#setup-py

  • 目录结构

# 此处有图片

3.3. 打包

执行:

python setup.py sdist bdist_wheel
此时目录中新增了很多新的文件:

# 此处有图片

dist 目录下就是我们需要上传的文件。

3.4. 上传

我们使用 twine 包来上传到私服,官网地址:

https://pypi.org/project/twine/
执行:
pip install twine
twine upload --repository-url <url> dist/*
<url> 需要替换成我们刚刚搭建的 nexus hosted 私服的 url,在 nexus components 页面有 copy 按钮,点击复制即可。
根据提示填写具有管理员权限的用户名、密码即可。

页面上就可以看到已经上传成功的 pypi 包了。

# 此处有图片

4. pypi 包的下载和安装

需要安装和下载 pypi 包的话,只需要执行:

pip install helloworld -i <url>/simple --trusted-host <host>
这里 <url> 需要替换成我们刚刚搭建的 nexus group 私服的 url,可以看到安装顺利进行:

# 此处有图片

5. 调用

编写代码:

from helloworld.demo import Demo

if __name__ == '__main__':
    Demo.hello()

执行代码,打印出了:

helloworld

6. 微信公众号

欢迎关注微信公众号,以技术为主,涉及历史、人文等多领域的学习与感悟,每周三到七篇推文,全部原创,只有干货没有鸡汤。

# 此处有图片

7. 参考资料

https://pypi.org/project/twine/
https://packaging.python.org/tutorials/packaging-projects/#setup-py。
https://blog.csdn.net/m0_37607365/article/details/79998955。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 CentOS 上搭建 PyPI 镜像,您可以按照以下步骤进行操作: 1. 安装并配置 Nginx 服务器 在 CentOS 上安装 Nginx: ``` sudo yum install nginx ``` 配置 Nginx 服务器,将其作为 PyPI 镜像的代理服务器。在 Nginx 的配置文件 `/etc/nginx/nginx.conf` 中添加以下内容: ``` server { listen 80; server_name pypi.example.com; access_log /var/log/nginx/pypi.access.log; error_log /var/log/nginx/pypi.error.log; location / { proxy_pass http://pypi.python.org; proxy_set_header Host pypi.python.org; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` 注意将 `pypi.example.com` 替换为您的 PyPI 镜像域名。 2. 安装并配置 devpi-server devpi-server 是一个 PyPI 服务器,您可以使用它来创建本地 PyPI 镜像。在 CentOS 上安装 devpi-server: ``` sudo yum install python3-pip sudo pip3 install -U devpi-server ``` 创建一个 devpi-server 实例: ``` devpi-server --start --host=127.0.0.1 --port=3141 ``` 您可以使用 `--port` 参数指定 devpi-server 实例的端口号。 3. 配置 pip 在您的 CentOS 机器上,打开 `~/.pip/pip.conf` 文件,如果没有该文件则创建它,添加以下内容: ``` [global] index-url = http://pypi.example.com/simple/ trusted-host = pypi.example.com ``` 注意将 `pypi.example.com` 替换为您的 PyPI 镜像域名。现在,当您使用 pip 安装 Python 包时,它将从您的本地 PyPI 镜像获取软件包。 希望这些步骤可以帮助您在 CentOS 上搭建 PyPI 镜像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值