Linux中國

Artipie:可用於 Python 的開源倉庫管理器

Artipie 是一個開源的自託管的倉庫管理器,它不僅可以用於 Python。

在學生時代使用 Python 開發時,我發現我需要一些私人的集中存儲。這樣我就可以存儲二進位和文本數據文件,以及 Python 軟體包。我在 Artipie 中找到了答案,這是一個開源的自託管的軟體倉庫管理器。

在大學裡,我和我的同事們對來自實驗測量的大量數據進行研究。我使用 Python 來處理和可視化它們。當時我的大學同事是數學家,沒有軟體開發技術的經驗。他們通常只是在快閃記憶體盤上或通過電子郵件傳遞數據和代碼。我努力向他們介紹像 Git 這樣的版本管理系統,但沒有成功。

Python 倉庫

Artipie 支持 PyPI 倉庫,與 twinepip 兼容。這意味著你可以完全像在 PyPITestPyPI 倉庫上安裝或發布軟體包那樣使用 Artipie Python 倉庫。

要創建你自己的 Python 倉庫,你可以使用名為 Artipie Central 的 Artipie 託管實例。當你登錄後,你會看到一個列出你的倉庫的頁面(開始時是空的),以及一個添加新倉庫的表單。為你的新倉庫選擇一個名字(例如,mypython),選擇 Python 作為倉庫類型,然後點擊 「 添加 Add 」 按鈕。

接下來,你會看到一個以 YAML 格式顯示倉庫設置的頁面:

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

配置中的 type 映射設置了倉庫的類型。在這個例子中,Python 倉庫被配置為默認的 Artipie Central 存儲。

storage 映射定義了所有倉庫包的存儲位置。這可以是任何文件系統或 S3 存儲兼容的位置。Artipie Central 有一個預先配置的 default 存儲,可以使用它進行測試。

permissions 映射允許為用戶 olenagerasimova 上傳,並允許任何人下載任何軟體包。

為了確保這個倉庫的存在和工作,在你的瀏覽器中打開 索引頁。顯示的是軟體包列表。如果你剛剛創建了一個新的版本庫,但還沒有上傳軟體包,那麼倉庫的索引頁是空白的。

二進位倉庫

你可以在 Artipie 中存儲任何種類的文件。存儲類型是 filebinary,我用這個作為實驗數據的存儲。我把它作為 Python 可視化的輸入。在 Artipie Central 可以創建一個文件倉庫,與 Python 倉庫的方式相同。你給它一個名字,選擇 binary 類型,然後點擊 「 添加 Add 」 按鈕。

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 項目

可以從我的 GitHub 倉庫中獲得一個 Python 項目的示例源代碼。這個示例的主要想法是,從 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 來查看現有的倉庫:

  • 進入 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 列表:

[
  "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,看看它能為你帶來什麼。

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

作者:Alena Gerasimova 選題:lkxed 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國