上傳到 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 解釋了一些許可證。