將python包上傳到PyPI
阿新 • • 發佈:2018-12-30
目標:
將自己寫的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就可以了,其他版本沒有試過