程式語言:Python
Package:setuptools
PyPA 文件
setuptools 官網文件
PyPA sample project
功能:打包為 package 以便分享
Source Distributions (sdist) 原始碼
Wheel (建議使用)
需先安裝 wheel
即使使用 MANIFEST.in 指定,在 package 外的文件仍不會被打包,例:LICENSE.txt
此時需 data_files 指定才行,但 sdist 並不會有此問題
可建立 $HOME/.pypirc 文件
PyPI, pip, easy_install, setuptools,distutils,egg 等等
一文教会你正确打包Python程序
Python打包分发工具setuptools简介
Package:setuptools
PyPA 文件
setuptools 官網文件
PyPA sample project
功能:打包為 package 以便分享
基本架構
MyProject-|--setup.py => 最重要的文件,包含了打包的參數和基本信息 |--setup.cfg => setup.py 的命令配置文件,其格式為 INI |--README.rst => 介紹,格式若為 README.md 需額外設置 MANIFEST.in 打包此文件 |--MANIFEST.in => 指定需額外打包的文件 |--LICENSE.txt |--pkgA---|--__init__.py | |--modA_1.py | |--modA_2.py |--pkgB---|--__init__.py |--modB.py
setup.py
必要文件,包括各種參數與訊息
可用 python setup.py --help-commands 獲得相關指令
可用 python setup.py --help-commands 獲得相關指令
setup.cfg
在 setup.py 設定的值,皆可透過此文件設定,命令的預設參數也可指定,設定方法
MANIFEST.in
設定方法
需在 setup.py 設定 include_package_data=True,才會有作用
需在 setup.py 設定 include_package_data=True,才會有作用
打包方法
兩種方式,打包後的檔案,皆放在 dist 下Source Distributions (sdist) 原始碼
python setup.py sdist
Wheel (建議使用)
需先安裝 wheel
python -m pip install wheel
python setup.py bdist_wheelP.S.
即使使用 MANIFEST.in 指定,在 package 外的文件仍不會被打包,例:LICENSE.txt
此時需 data_files 指定才行,但 sdist 並不會有此問題
上傳至 PyPI
可同時上傳 原始碼 與 wheel,pip install 時將優先使用 wheel- 註冊帳號
- 安裝 twine
pip install twine
- 上傳至測試網站,確認內容正確
# 上傳測試 twine upload --repository-url https://test.pypi.org/legacy/ dist/* # 安裝測試 pip install --index-url https://test.pypi.org/simple/ your-package
- 上傳至 PyPI
twine upload dist/*
可建立 $HOME/.pypirc 文件
[distutils] index-servers = pypi testpypi [pypi] username: <username> password: <password> [testpypi] repository: https://test.pypi.org/legacy/ username: your testpypi username password: your testpypi password
參考
Python application 的打包和发布——(上)PyPI, pip, easy_install, setuptools,distutils,egg 等等
一文教会你正确打包Python程序
Python打包分发工具setuptools简介
版本命名其實挺重要...pip install --pre會影響到能不能安裝(pep426)
回覆刪除