Jeśli wykonam sphinx-quickstart
, otrzymam pytanie o wersję projektu.Niech sfinks użyje wersji z setup.py
Chciałbym uniknąć dwóch miejsc dla wersji mojego projektu.
Jak to zrobić w świecie pakowania pytonów?
Jeśli wykonam sphinx-quickstart
, otrzymam pytanie o wersję projektu.Niech sfinks użyje wersji z setup.py
Chciałbym uniknąć dwóch miejsc dla wersji mojego projektu.
Jak to zrobić w świecie pakowania pytonów?
Najprostszym (i prawdopodobnie najczystszym) sposobem jest zdefiniowanie __version__
dla __init__.py
swojego pakietu najwyższego poziomu, a następnie zaimportować ten pakiet i odczytać wersję zarówno setup.py
i projekt Sfinksa conf.py
.
Powiedzmy, że Twój projekt nazywa się myproject
.
Najedź aktualną wersję z setup.py
i uczynić ją zmienną w myproject/__init__.py
zamiast:
myproject/__init__.py
:
# import foo
# ...
__version__ = '1.5'
importu myproject
w Twój projekt na setup.py
i zastąpić Hardcoded wersję z myproject.__version__
:
setup.py
:
from setuptools import setup
from myproject import __version__
project = "myproject"
setup(
name=project,
version=__version__,
# ...
)
w projekcie Sfinksa conf.py
, zrobić to samo. Więc edytować wygenerowany conf.py
wzdłuż tych linii:
docs/conf.py
:
from myproject import __version__
# ...
# The short X.Y version.
version = __version__
# The full version, including alpha/beta/rc tags.
release = version
Na przykład biblioteki, które wykonuje to prawie dokładnie tak, rzucić okiem na module requests
(__init__.py
| setup.py
| conf.py
).
To zajmie się automatycznie generowanymi tekstami, w których używana jest wersja projektu (np. Linki do strony głównej dokumentacji). Jeśli chcesz użyć swojej wersji w określonych miejscach niestandardowych, możesz użyć dyrektywy rst_epilog
do dynamicznego wstawiania wartości konfiguracyjnych zdefiniowanych w conf.py
.
In another W związku z tym zwrócono uwagę, że jeśli zaimportujesz jakieś zależności w myproject/__ init__.py, a następnie wykonaj polecenie 'from myproject import __version__' w setup.py, użytkownik nie będzie w stanie zainstalować pakietu bez uprzedniego zainstalowania zależności: http://stackoverflow.com/questions/2058802/how-can-i -get-the-wersja-zdefiniowana-w-setup-py-setuptools-in-my-package –
Można spojrzeć na bumpversion
modułu:
„małe narzędzie wiersza polecenia, aby ułatwić zwalnianie oprogramowanie aktualizując wszystkie ciągi wersji w kodzie źródłowym w wyniku prawidłowego przyrostu”
można użyć konfiguracji plik .bumpversion.cfg
dla złożonych operacji wielu plików.
Może to tylko zrzucić jedną z linii w dokumencie/conf.py – kaleissin
Czy więc jedna z odpowiedzi zadziałała dla Ciebie? Jeśli tak, zaakceptuj odpowiednią odpowiedź. Jeśli nie, w czym problem? –
Dziękuję za pytanie. Nie spieszę się z tym tematem. Chcę odpowiedzi kanonicznej. Zapytam o dist-sig: https://www.python.org/community/sigs/current/distutils-sig – guettli
Powiązane: https://packaging.python.org/en/latest/single_source_version.html – guettli