第一個pip安裝包程序實驗
- 經常在使用Python項目和編程中,會經常使用到pip install 包名 或者使用 easy_install 包名進行有關依賴程序包安裝操作。
- 通過查看相對應的指導文檔發現,該程序包可以自己編寫好后進行上傳到pip官網,便於其他人使用。
- 網址:https://pypi.org/
Packaging and distributing projects(打包和發布項目)
- 首先, 確認滿足包安裝的需求,如Python版本環境等。
- 安裝"twine"模塊
pip install twine
- 你需要將你的項目發布上傳到PyPI。
需要上傳的項目配置
初始化文件
setup.py
- 最重要的文件是setup.py,它存在於項目目錄的根目錄下。有關示例,請參閱PyPA示例項目中的setup.py。
- setup.py提供兩個主要功能:
- 這是您的項目各個方面的配置文件。 setup.py的主要功能是它包含一個全局setup()函數。 此函數的關鍵字參數是您的項目的具體細節是如何定義的。 最相關的論點將在下面的部分進行解釋
- 這是用於運行與打包任務相關的各種命令的命令行界面。 要獲取可用命令的列表,請運行python setup.py --help-commands。
setup.cfg
- 是一個ini文件,其中包含setup.py命令的默認選項。 有關示例,請參閱PyPA示例項目中的setup.cfg。
README.rst / README.md 文件
-
所有項目都應該包含一個涵蓋項目目標的自述文件。最常見的格式是帶有“rst”擴展名的reStructuredText,雖然這不是要求;Markdown的多種變體也被支持(查看setup()的long_description_content_type參數)
注意使用setuptools的項目默認情況下包含在源代碼分發中的README.rst(自0.6.27開始)。 內置的distutils庫在Python 3.7中開始采用這種行為。 如果您使用setuptools,則不需要在MANIFEST.in中列出README.rst。 否則,包括它是明確的。
MANIFEST.in
LICENSE.txt
你的項目包
- 包的名稱最好和你的頂級項目包名稱一致
- 案列:https://github.com/pypa/sampleproject
注意事項
- Python 模塊或者包名應該遵守以下的規則:
- 全小寫
- 不要和pypi上已有的包名重復,即使你不想公開發布你的包,因為你的包可能作為其他包的依賴包
- 使用下划線分隔單詞或者什么都不用(不要使用連字符)
- 現在把我們的函數變成一個Python module
開始工作
- 目錄結構 funniest 如下:
pipfunctiontest/ pipfunctiontest/ __init__.py setup.py
最外層的目錄是我們版本管理工具的根目錄, 例如 funniest.git . 子目錄也叫 funniest , 代表Python module.
- 為了更好理解, 我們把函數 joke() 放到 init.py 中:
def joke(): return (u'How do you tell HTML from HTML5?' u'Try it out in Internet Explorer.' u'Does it work?' u'No?' u'It\'s HTML5.')
- 最主要的setup配置文件是 setup.py , 應該包含一行代碼調用 setuptools.setup() ,就像下面這樣:
from setuptools import setup setup(name='pipfunctiontest', version='v1.0', description='The pipfunctiontest joke in the world', url='http://github.com/storborg/pipfunctiontest', author='Flying Circus', author_email='zksfyz@gmail.com', license='MIT', packages=['pipfunctiontest'], zip_safe=False)
- 現在我們可以在本地安裝這個python包:
$ python setup.py install
- 我們也可以使用開發模式安裝這個包, 每次修改代碼之后不用重新安裝, 立即可用最新的代碼.:
$ python setup.py develop
- 不管用哪種方式,安裝之后就可以在python中使用這個包:
>>> import pipfunctiontest >>> print pipfunctiontest.joke()
- 在PyPI上發布
- 腳本 setup.py 也是在PyPI注冊和上傳源碼包的入口.
- 第一步創建一個源碼包:
$ python setup.py sdist
- 上面register和upload會失敗,因此需要采用之前安裝的twine
twine upload dist/* #打包好的代碼包
- 安裝這個包
- 上面的步驟完成之后, 其他用戶可以直接用 easy_install 安裝:
easy_install pipfunctiontest
- 或者使用 pip
$ pip install pipfunctiontest