簡體   English   中英

Python package 在帶有 CLI 實用程序的私有倉庫中 - 如何部署、使用和構建

[英]Python package in private repo with CLI utility - how to deploy, use, and structure

I've established a private github organization for common python repos - each repo is basically a unique python 3rd party package (like numpy for example) but that are homegrown. 這些將用於不同的項目。

目前,repos 只是源代碼包,沒有使用 Wheels 或 sdist 編譯發布 - 所以每個都有 setup.py 和庫的模塊/業務邏輯的目錄結構。 基本上回購看起來有點像這樣: https://packaging.python.org/tutorials/packaging-projects/

目前,我不想討論編譯版本或私有 PyPI 服務器。 我需要幫助/指導的是,如果它不僅是一個庫,而且還有一個 CLI 工具(使用該庫)。

我希望用戶做幾件事之一:克隆它,相應地設置 PYTHONPATH/PATH 並使用它,或者 package 和 pip 安裝它。 但是 CLI 工具應該包含在該存儲庫中還是外部? 怎么稱呼它(即 python -m )。

對我來說奇怪的是,軟件包似乎更適合真正的庫而不是庫+工具。 在我的思考過程中有什么幫助以及如何調用?

感謝@phd 幫我遛狗。

對於我的 package 項目,我定義了一個 setup.py(用 python 的說法代替 makefile),它定義了這個入口點:

setuptools.setup(
    name="pkg_name",                  # Replace with your package name
    version="0.0.1",                  # see pep 440
    ...
    scripts=['bin/simple_cli.py'],    # callable script to register (updates PATH)
    ...
)

現在在 package 項目本身中,基本結構如下,我將突出顯示bin/目錄:

$ tree -L 3
.
├── bin
│   └── simple_cli.py
├── contributing.md
├── LICENSE
├── makefile
├── pkg_name
│   ├── example_module.py
│   ├── __init__.py
├── README.md
├── requirements.txt
├── setup.py
└── tests
    ├── test_main.py

構建完成后(sdist、wheels 等),我們可以使用 pip 安裝。 我在虛擬環境中對此進行了測試,這里是 simple_cli.py 存在的地方:

在此處輸入圖像描述

上面的注釋有一些參考,但最終狀態是文件安裝在 venv bin/ 目錄中(可在 PATH 上使用激活的 venv)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM