Redian新闻
>
Artipie:可用于 Python 的开源仓库管理器 | Linux 中国

Artipie:可用于 Python 的开源仓库管理器 | Linux 中国

科技
 
导读:Artipie 是一个开源的自托管的仓库管理器,它不仅可以用于 Python。               
本文字数:4922,阅读时长大约:6分钟

Artipie 是一个开源的自托管的仓库管理器,它不仅可以用于 Python。

在学生时代使用 Python 开发时,我发现我需要一些私人的集中存储。这样我就可以存储二进制和文本数据文件,以及 Python 软件包。我在 Artipie🔗 github.com 中找到了答案,这是一个开源的自托管的软件仓库管理器。

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

Python 仓库

Artipie 支持 PyPI🔗 pypi.org 仓库,与 twine🔗 github.com 和 pip🔗 pip.pypa.io 兼容。这意味着你可以完全像在 PyPI🔗 pypi.org 和 TestPyPI🔗 test.pypi.org 仓库上安装或发布软件包那样使用 Artipie Python 仓库。

要创建你自己的 Python 仓库,你可以使用名为 Artipie Central🔗 central.artipie.com 的 Artipie 托管实例。当你登录后,你会看到一个列出你的仓库的页面(开始时是空的),以及一个添加新仓库的表单。为你的新仓库选择一个名字(例如,mypython),选择 Python 作为仓库类型,然后点击 “添加(Add)” 按钮。

接下来,你会看到一个以 YAML🔗 www.redhat.com 格式显示仓库设置的页面:

  1. ---
  2. repo:
  3. type: pypi
  4. storage: default
  5. permissions:
  6. olenagerasimova:
  7. - upload
  8. "*":
  9. - download

配置中的 type 映射设置了仓库的类型。在这个例子中,Python 仓库被配置为默认的 Artipie Central 存储。

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

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

为了确保这个仓库的存在和工作,在你的浏览器中打开 索引页🔗 central.artipie.com。显示的是软件包列表。如果你刚刚创建了一个新的版本库,但还没有上传软件包,那么仓库的索引页是空白的。

二进制仓库

你可以在 Artipie 中存储任何种类的文件。存储类型是 file 或 binary,我用这个作为实验数据的存储。我把它作为 Python 可视化的输入。在 Artipie Central 可以创建一个文件仓库,与 Python 仓库的方式相同。你给它一个名字,选择 binary 类型,然后点击 “添加(Add)” 按钮。

  1. ---
  2. repo:
  3. type: file
  4. storage: default
  5. permissions:
  6. olenagerasimova:
  7. - upload
  8. - download
  9. "*":
  10. - download

这些设置基本上与 Python 相同。只有仓库的类型不同。在这个例子中,二进制仓库被称为 data。它包含三个带有一些数字的文本文件:

  1. 6
  2. 3.5
  3. 5
  4. 4
  5. 4.5
  6. 3
  7. 2.7
  8. 5
  9. 6
  10. 3
  11. 1.2
  12. 3.2
  13. 6

另外两个文件的形式相同(只是数字不同)。要想自己看这些文件,请在浏览器中打开链接 🔗 central.artipie.com🔗 central.artipie.com 和 🔗 central.artipie.com 并下载文件,或者你可以用 httpie 执行 GET 请求:

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

这些文件是用 PUT 请求上传到 Artipie Central 的 data 存储库的:

  1. httpie -a olenagerasimova:*** PUT
  2. https://central.artipie.com/olenagerasimova/data/y1.dat @data/y1.dat
  3. httpie -a olenagerasimova:*** PUT
  4. https://central.artipie.com/olenagerasimova/data/y2.dat @data/y2.dat
  5. httpie -a olenagerasimova:*** PUT
  6. https://central.artipie.com/olenagerasimova/data/y3.dat @data/y3.dat

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

Python 项目

可以从我的 GitHub 仓库🔗 github.com中获得一个 Python 项目的示例源代码。这个示例的主要想法是,从 Artipie Central 下载三个数据文件,将数字读入数组,并使用这些数组来绘制一个图。使用 pip 来安装这个例子包并运行它:

  1. $ python3 -m pip install --index-url \
  2. https://central.artipie.com/olenagerasimova/pypi/ \
  3. pypiexample
  4. $ python3 -m pypiexample

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

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

  1. commandline
  2. $ python setup.py sdist bdist_wheel
  3. $ twine upload --repository-url \
  4. https://central.artipie.com/olenagerasimova/pypi
  5. -u olenagerasimova -p *** dist/*

在 Artipie Central 中设置 files 仓库,并创建一个 Python 示例项目是多么容易。不过,你不必使用 Artipie Central。Artipie 可以自托管,所以你可以在你自己的本地网络上运行一个仓库。

将 Artipie 作为一个容器运行

将 Artipie 作为一个容器运行,设置起来就像安装 Podman 或 Docker 一样容易。假设你已经安装了其中之一,打开终端:

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

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

你也可以使用 Artipie Rest API 来查看现有的仓库:

◈ 进入 Swagger 文档页面 http://localhost:8086/api/index-org.html
◈ 在 “选择一个定义(Select a definition)” 列表中,选择 “认证令牌(Auth token)”。
◈ 生成并复制用户 artipie 的认证令牌,密码是 artipie
◈ 切换到 “仓库(Repositories)” 定义,点击 “认证(Authorize)” 按钮,然后粘贴令牌。

Image of the Swagger documentation page,

对 /api/v1/repository/list 执行一个 GET 请求。在响应中,你会收到一个包含三个默认仓库的 JSON 列表:

  1. [
  2. "artipie/my-bin",
  3. "artipie/my-docker",
  4. "artipie/my-maven"
  5. ]

默认配置中不包括 Python 仓库。你可以通过从 Swagger 接口向 /api/v1/repository/{user}/{repo} 执行 PUT 请求来纠正。在这种情况下,user 是默认用户的名字(artipie),repo 是新仓库的名字。你可以把你的新 Python 代码库称为 my-pypi。下面是一个请求体的例子,包含带仓库设置的 JSON 对象:

  1. {
  2. "repo": {
  3. "type": "pypi",
  4. "storage": "default",
  5. "permissions": {
  6. "*": [
  7. "download"
  8. ],
  9. "artipie": [
  10. "upload"
  11. ]
  12. }
  13. }
  14. }

所有的 JSON 字段都和你在仪表板上创建 YAML 格式的仓库时一样。我们版本库的类型是 pypi,使用默认存储,任何人都可以下载,但只有用户 artipie 可以上传。

再次向 /api/v1/repository/list 发出 GET 请求,确保你的仓库被创建。现在,你有四个仓库:

  1. [
  2. "artipie/my-bin",
  3. "artipie/my-docker",
  4. "artipie/my-maven",
  5. "artipie/my-pypi"
  6. ]

你已经创建了你自己的 Artipie 安装,包含了几个仓库!Artipie 镜像既可以在个人电脑上运行,也可以在私人网络内的远程服务器上运行。你可以用它来在一个公司、团体或大学内交换软件包。这是一个建立你自己的软件服务的简单方法,而且它不仅仅适用于 Python。花些时间来探索 Artipie,看看它能为你带来什么。


via: https://opensource.com/article/22/12/python-package-index-repository-artipie

作者:Alena Gerasimova 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者 :geekpi
💎💎💎💎
翻译: 1880.5 篇
|
贡献: 3415 天
2013-10-25
2023-03-02
https://linux.cn/lctt/geekpi
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Live Captions:Linux 上的开源视频字幕应用 | Linux 中国TUXEDO Stellaris 16(Gen5)是目前所能找到的终极 Linux 笔记本电脑 | Linux 中国Flathub 计划发展为通用的 Linux 应用商店 | Linux 中国Rnote:一个用于笔记和注释的开源绘图应用 | Linux 中国洛杉矶街头, 遇到黑人流浪汉……爸爸头七,写写我心目中的爸爸【职位】兼职咖啡师、仓库库管、后厨帮工&物业清洁~总有一款兼职适合你!文化大革命是新文化运动的继续管理对新手友好的开源社区的三个步骤 | Linux 中国Kali Linux 推出用于防御性安全加固的 “Kali Purple” | Linux 中国广场《流浪2》《中国乒乓》等一大波春节档华语电影上映!而我们恰好有$14.5的半价电影票!可用于任意Hoyts任意电影Flask之父凭一己之力击败各种GPT,称Python包管理比LLM更火热Home Assistant:谷歌助理、Alexa 和 Siri 的开源替代品 | Linux 中国谷歌开源!一个格式化 Python 代码的好帮手如何在 Ubuntu 和 Fedora 中设置 Python 开发环境 | Linux 中国【职位】仓库库管、兼职咖啡师、披萨店送餐司机&Bookkeeper~总有一款兼职适合你!为什么适用于Python的TensorFlow正在缓慢消亡Postgres DevOps 数据库管理员的日常 | Linux 中国狐狸精少女世界上只有两个 Linux 发行版:Arch Linux 与其它 | Linux 中国lnav: 用于 Linux 的高级日志文件浏览器 | Linux 中国Python上线最新证书:可直接挂LinkedIn、留学生7天能拿!Arch Linux 的最佳 GUI 包管理器 | Linux 中国Pandas:用于数据分析和数据科学的最热门 Python 库 | Linux 中国"𝙇𝙚𝙖𝙙 𝙏𝙝𝙚 𝘾𝙝𝙖𝙧𝙜𝙚"广告#创译挑战如何在 Ubuntu 和其他 Linux 下安装 IDLE Python IDE | Linux 中国GNOME 2 的 Linux 文件管理器 Caja | Linux 中国适用于 Linux 的五大流媒体直播应用 | Linux 中国Python 程序配置文件管理的最佳工程实践Python 中的变量:概念与示例 | Linux 中国Agustín Hernández:中美洲建筑背景下的未来主义巨构麻省理工Python增强编译器Codon 让Python像C\\C++一样高效PyTorch安装包出问题,官方警告:这些Linux用户请立即卸载,否则会遭数据泄漏PyTorch 安装包出问题,官方警告:这些 Linux 用户请立即卸载,否则会遭数据泄漏
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。