我如何使用 Artipie,一个 PyPI 仓库

Artipie 是一个开源的自托管软件仓库管理器,其用途远不止 Python。
3 位读者喜欢这篇文章。
Woman programming

WOCinTech Chat。由 Opensource.com 修改。CC BY-SA 4.0

作为一名学生,在进行 Python 开发时,我发现我需要一些私有的集中式存储。这样我就可以存储二进制和文本数据文件,以及 Python 包。我在 Artipie 中找到了答案,它是一个开源的自托管软件仓库管理器。

在大学里,我和我的同事进行研究,并处理来自实验测量的大量数据。我使用 Python 来处理和可视化它们。我当时的大学同事是数学家,没有软件开发技术的经验。他们通常只是通过闪存驱动器或电子邮件传递数据和代码。我试图向他们介绍像 Git 这样的版本控制系统,但没有成功。

Python 仓库

Artipie 支持 PyPI 仓库,使其与 twinepip 都兼容。这意味着您可以像在 PyPITestPyPI 仓库上安装或发布软件包一样,使用 Artipie Python 仓库。

要创建您自己的 Python 仓库,您可以使用 Artipie 的托管实例 Artipie Central。登录后,您会看到一个页面,其中列出了您的仓库(最初是空的)和一个用于添加新仓库的表单。为您的新仓库选择一个名称(例如,mypython),选择“Python”作为仓库类型,然后单击添加按钮。

接下来,您会看到一个页面,其中包含 YAML 格式的仓库设置

---
​repo:
  type: pypi
  storage: default
  permissions:
    olenagerasimova:
      - upload
    "*":
      - download

配置中的 type 映射设置仓库类型。在本例中,Python 仓库配置为使用默认的 Artipie Central 存储。

storage 映射定义了所有仓库软件包的存储位置。这可以是任何文件系统或与 S3 存储兼容的位置。Artipie Central 有一个预配置的 default 存储,任何人都可以用于测试。

permissions 映射允许用户 olenagerasimova 上传,并允许任何人下载任何软件包。

为了确保此仓库存在且工作正常,请在浏览器中打开 索引页面。软件包列表将显示。如果您刚刚创建了一个新仓库但尚未上传软件包,则仓库索引页面为空白。

二进制仓库

您可以在 Artipie 中存储任何类型的文件。存储类型称为文件或二进制,我将其用作实验数据的存储。我将其用作 Python 可视化的输入。可以在 Artipie Central 中创建文件仓库,方法与创建 Python 仓库相同。您为其命名,选择类型二进制,然后单击添加按钮。

---
​repo:
  type: file
  storage: default
  permissions:
    olenagerasimova:
      - upload
      - download
    "*":
      - download

设置与 Python 的基本相同。只有仓库类型不同。在此示例中,二进制仓库名为 data。它包含三个包含一些数字的文本文件

​6
3.5
5
4
4.5
3
2.7
5
6
3
1.2
3.2
6

其他两个文件采用相同的形式(只有数字不同)。要亲自查看这些文件,请打开链接 在浏览器中并下载文件,或者您可以使用 httpie 执行 GET 请求

​httpie -a https://central.artipie.com/olenagerasimova/data/y1.dat > ./data/y1.da

这些文件通过 PUT 请求上传到 Artipie Central data 仓库

​httpie -a olenagerasimova:*** PUT https://central.artipie.com/olenagerasimova/data/y1.dat @data/y1.dat

httpie -a olenagerasimova:*** PUT https://central.artipie.com/olenagerasimova/data/y2.dat @data/y2.dat

httpie -a olenagerasimova:*** PUT https://central.artipie.com/olenagerasimova/data/y3.dat @data/y3.dat

由于此二进制仓库 API 非常简单(HTTP PUTGET 请求),因此很容易用任何语言编写一段代码来上传和下载所需的文件。

Python 项目

示例 Python 项目的源代码可从我的 GitHub 仓库 获取。该示例的主要思想是从 Artipie Central 下载三个数据文件,将数字读入数组,并使用这些数组绘制图表。使用 pip 安装示例软件包并运行它

​$ python3 -m pip install --index-url \
https://central.artipie.com/olenagerasimova/pypi/ \
pypiexample
$ python3 -m pypiexample
​

通过将 --index-url 设置为 Artipie Central Python 仓库,pip 会从该仓库而不是作为通常默认设置的 PyPi 仓库下载软件包。运行命令后,将显示一个包含三条曲线的极坐标图,这是数据文件的可视化。

要将软件包发布到 Artipie Central 仓库,请使用 构建它,并使用 twine 上传它

commandline
$ python setup.py sdist bdist_wheel

$ twine upload --repository-url \
https://central.artipie.com/olenagerasimova/pypi
-u olenagerasimova -p *** dist/*

这就是在 Artipie Central 中设置 files 仓库、创建示例 Python 项目、发布和安装它有多么容易。但是,您不必使用 Artipie Central。Artipie 可以自托管,因此您可以在自己的本地网络上运行仓库。

将 Artipie 作为容器运行

将 Artipie 作为容器运行使设置变得像安装 Podman 或 Docker 一样简单。假设您已安装其中一个,请打开终端

​$ podman run -it -p 8080:8080 -p 8086:8086 artipie/artipie:latest
​

这将启动一个新容器,运行最新版本的 Artipie。它还映射了两个端口。您的仓库在端口 8080 上提供服务。Artipie Rest API 和 Swagger 文档在端口 8086 上提供。新镜像生成默认配置,打印正在运行的仓库列表、测试凭据以及指向您控制台的 Swagger 文档的链接。

您还可以使用 Artipie Rest API 查看现有仓库

  1. 转到 Swagger 文档页面 http://localhost:8086/api/index-org.html

  2. 选择定义列表中,选择 Auth token

  3. 为用户 artipie 使用密码 artipie 生成并复制身份验证令牌

  4. 切换到 Repositories 定义,然后单击 Authorize 按钮,然后粘贴令牌

Image of the Swagger documentation page,

(Seth Kenlon,CC BY-SA 4.0)

 

/api/v1/repository/list 执行 GET 请求。作为响应,您将收到一个包含三个默认仓库的 JSON 列表

 

​[ "artipie/my-bin",
  "artipie/my-docker",
  "artipie/my-maven" ]

Python 仓库未包含在默认配置中。您可以通过从 Swagger 界面对 /api/v1/repository/{user}/{repo} 执行 PUT 请求来纠正此问题。在这种情况下,user 是默认用户的名称 (artipie),repo 是新仓库的名称。您可以将新的 Python 仓库命名为 my-pypi。这是一个示例请求正文,其中包含带有仓库设置的 JSON 对象

​{ "repo": {
  "type": "pypi",
  "storage": "default",
  "permissions": {
  "*": [
  "download"
  ],
  "artipie": [
  "upload"
  ] }
 } }

所有 JSON 字段与您在仪表板中以 YAML 格式创建仓库时相同。我们的仓库类型为 pypi,使用默认存储,任何人都可以下载,但只有用户 artipie 可以上传。

再次对 /api/v1/repository/list 执行 GET 请求,以确保您的仓库已创建。现在,您有四个仓库

​[ "artipie/my-bin",
"artipie/my-docker",
"artipie/my-maven",
"artipie/my-pypi" ]

您已经创建了自己的 Artipie 安装,其中包含多个仓库!Artipie 镜像既可以在个人计算机上运行,也可以在专用网络中的远程服务器上运行。您可以使用它在公司、团队或大学内交换软件包。这是一种轻松设置您自己的软件服务的方法,而且它不仅仅适用于 Python。花一些时间探索 Artipie,看看它能为您带来什么可能。

标签
Headshot
2016 年毕业于俄罗斯人民友谊大学,获得数学硕士学位。在大学期间,我研究了不稳定的反问题、弗雷德霍姆积分方程、各种稳定化技术和数值解。

评论已关闭。

知识共享许可协议本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.