1. 程式人生 > >將python包上傳到PyPI

將python包上傳到PyPI

目標:

將自己寫的python包上傳到PyPI上,這樣其他人就可以用pip下載了

總體檔案結構:

--- Root directory (name doesn't matter)
 |- your_library
 |  |- __init__.py
 |  |- actual_code_goes_here.py
 |- setup.py
 |- README.rst
 |- LICENSE.txt

建立setup.py檔案

例子:

from setuptools import setup, find_packages

setup(
    name="advisorhelper"
, packages=find_packages(), version='0.9.3', description="command line tool for auto tuner", author="libbyandhelen", author_email='[email protected]', url="https://github.com/username/reponame", download_url='https://github.com/username/reponame/archive/0.1.tar.gz', keywords=['command'
, 'line', 'tool'], classifiers=[], entry_points={ 'console_scripts': [ 'command1 = advisorhelper.cmdline:execute' 'command2 = adviserserver.create_algorithm:run', 'command3 = adviserserver.run_algorithm:run' ] }, install_requires=[ 'grpcio>=1.7.0'
, 'numpy', 'requests', ] )

注:

  • Name: 包的名字
  • find_packages(): 預設以setup.py所在路徑為源路徑(也可以用引數指定),遞迴遍歷找到所有的python包(含有init.py的資料夾),支援include,exclude引數
  • find_packages(exclude=[“.tests”, “.tests.“, “tests.“, “tests”])
  • version:如修改後再次上傳,需要使用不同版本號
  • entry_points:指定包的入口
  • install_requires: 指定此包的依賴
  • url 和 download_url不是必須,可填寫github地址

在 PyPI Live 上註冊一個賬戶

建立.pypirc檔案,這樣之後每次上傳就不用登入了

[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
  • /home/yourname/.pypirc on Mac and Linux
    C:\Users\YourName.pypirc on Windows
  • 改變檔案讀寫許可權,因為其中含有明文的密碼
    chmod 600 ~/.pypirc on Mac and Linux
    Windows中右鍵->屬性->安全

檢查一下setup.py的語法是否正確

python setup.py check

將包上傳到PyPI Live

python3.5 setup.py sdist upload -r pypi

注意這裡用的是python3.5,之前用python3.6會報[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed這個錯誤,python3.5就可以了,其他版本沒有試過

參考資料