上傳到 PyPI
一旦你的 setup.py
功能齊全(參見簡介 ),就可以很容易地將你的包上傳到 PyPI 。
設定 .pypirc 檔案
此檔案儲存登入名和密碼以驗證你的帳戶。它通常儲存在你的主目錄中。
# .pypirc file
[distutils]
index-servers =
pypi
pypitest
[pypi]
repository=https://pypi.python.org/pypi
username=your_username
password=your_password
[pypitest]
repository=https://testpypi.python.org/pypi
username=your_username
password=your_password
它是更安全的使用 twine
上載包,所以請確保已安裝。
$ pip install twine
註冊並上傳到 testpypi(可選)
注意 : PyPI 不允許覆蓋上傳的包 ,因此首先在專用測試伺服器上測試你的部署是謹慎的,例如 testpypi。將討論此選項。在上載之前考慮包的版本控制方案 ,例如日曆版本控制或語義版本控制 。
登入,或在 testpypi 建立一個新帳戶。註冊僅在第一次需要,雖然註冊不止一次是無害的。
$ python setup.py register -r pypitest
在包的根目錄中:
$ twine upload dist/* -r pypitest
你的套餐現在可以通過你的帳戶訪問。
測試
製作測試虛擬環境。嘗試從 testpypi 或 PyPI 中提取你的包。
# Using virtualenv
$ mkdir testenv
$ cd testenv
$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
# Test from testpypi
(.virtualenv) pip install --verbose --extra-index-url https://testpypi.python.org/pypi package_name
...
# Or test from PyPI
(.virtualenv) $ pip install package_name
...
(.virtualenv) $ python
Python 3.5.1 (default, Jan 27 2016, 19:16:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import package_name
>>> package_name.foo()
100
如果成功,你的包裹最不可匯入。你可能會考慮在最終上傳到 PyPI 之前測試你的 API。如果你在測試期間打包失敗,請不要擔心。你仍然可以修復它,重新上傳到 testpypi 並再次測試。
註冊並上傳到 PyPI
確保安裝了 twine
:
$ pip install twine
登入,或在 PyPI 建立一個新帳戶。
$ python setup.py register -r pypi
$ twine upload dist/*
而已! 你的包裹現已上線 。
如果你發現了錯誤,只需上傳新版本的軟體包即可。
文件
不要忘記至少包含一些包裝文件。PyPi 採用預設格式化語言 reStructuredText 。
自述
如果你的軟體包沒有大文件,請在 README.rst
檔案中包含可以幫助其他使用者的內容。檔案準備好後,需要另外一個來告訴 PyPi 顯示它。
建立 setup.cfg
檔案並將這兩行放入其中:
[metadata]
description-file = README.rst
請注意,如果你嘗試將 Markdown 檔案放入包中,PyPi 會將其作為純文字檔案讀取而不進行任何格式化。
許可
我們通常非常歡迎你使用其中一個 OpenSource 許可證將 LICENSE.txt
檔案放入你的軟體包中,以告知使用者他們是否可以在商業專案中使用你的軟體包,或者你的程式碼是否可以與他們的許可證一起使用。
以更易讀的方式, TL; DR 解釋了一些許可證。