回答
最簡單的(也可能是乾淨的)方法是定義__version__
你的頂級包的__init__.py
,然後導入包和閱讀都setup.py
和版本的獅身人面像項目的conf.py
。
因此可以說你的項目被稱爲myproject
。
移動當前的版本出來setup.py
,並使它成爲一個變量myproject/__init__.py
代替:
myproject/__init__.py
:
# import foo
# ...
__version__ = '1.5'
導入myproject
在項目的setup.py
,並更換硬編碼的版本myproject.__version__
:
setup.py
:
from setuptools import setup
from myproject import __version__
project = "myproject"
setup(
name=project,
version=__version__,
# ...
)
在您的獅身人面像項目的conf.py
,做同樣的。所以編輯沿着這些線路所產生的conf.py
:
docs/conf.py
:
from myproject import __version__
# ...
# The short X.Y version.
version = __version__
# The full version, including alpha/beta/rc tags.
release = version
爲了做這個幾乎完全一樣圖書館的一個例子,看看在requests
模塊(__init__.py
| setup.py
| conf.py
)。
這將處理使用項目版本的自動生成的文本(如鏈接到文檔的首頁)。如果您想在特定的自定義位置使用您的版本,則可以使用rst_epilog
指令動態插入在conf.py
中定義的配置值。
在另一個所以問題已經指出,如果你在myproject/__ init__中導入一些依賴項。py,然後在setup.py中執行'from myproject import __version__',用戶將無法安裝該軟件包,而無需先安裝依賴項:http://stackoverflow.com/questions/2058802/how-can-i -get-the-version-defined-in-setup-py-setuptools-in-my-package – 2016-04-26 10:16:14
這隻能在docs/conf.py中碰到其中一行 – kaleissin 2015-01-05 13:47:24
- 1. 從distutils獲取版本setup.py
- 2. 如何讓libstemmer在Debian中使用sphinx?
- 3. 在setup.py中執行python版本
- 4. 使用setup.py「Vendorize」
- 5. 用指定的python版本構建python setup.py
- 6. 鹽virtualenv.managed使用setup.py
- 7. 使用CMake和setup.py
- 8. 使用Sphinx創建類型鏈接到其他版本的標準庫napoleon
- 9. setup.py:限制python解釋器的允許版本
- 10. 自動更新每個SVN提交的setup.py版本
- 11. 如何讓Sphinx的inheritance_diagram可讀?
- 12. 如何讓setuptools在使用easy-install.pth時使用「setup.py develop」時的相對路徑
- 13. 如何讓應用程序使用特定版本的.NET?
- 14. 如何讓gcc使用庫的備用版本?
- 15. 如何讓apidocs在sphinx-apidoc中使用包而不是模塊
- 16. 如何讓Mac的終端使用Brew的PHP版本?
- 17. 如何讓`python setup.py test -q`更安靜?
- 18. install_requires在setup.py取決於安裝Python版本
- 19. 使用版本
- 20. py2app setup.py使用問題
- 21. 如何讓Octopress使用Ruby的系統版本?
- 22. 我如何讓ZSH使用最新的git版本?
- 23. 如何讓VirtualEnv使用setuptools的自定義版本?
- 24. 如何讓git-svn使用特定版本的SVN?
- 25. 如何讓easy_install使用正確版本的setuptools?
- 26. 如何讓Gradle編譯使用較新Java版本的源庫?
- 27. 如何讓eclipse perl項目使用特定的perl版本?
- 28. 如何讓IIS使用與IIS-Express相同版本的Oracle
- 29. 如何讓Phusion Passenger使用正確版本的Ruby?
- 30. Cocoapods - 在使用最新版本後使用舊版本的pod版本
那麼,它的任何答案都適合你嗎?如果是這樣,請接受相應的答案。如果不是,問題是什麼? – 2014-10-07 16:55:46
謝謝你的提問。我不急於討論這個話題。我想要一個規範的答案。我會詢問dist-sig:https://www.python.org/community/sigs/current/distutils-sig – guettli 2014-10-08 07:24:48
相關:https://packaging.python.org/en/latest/single_source_version.html – guettli 2015-01-07 20:13:07