1. 程式人生 > >第一個pip安裝包程序制作實驗

第一個pip安裝包程序制作實驗

module 版本 git con 界面 emd htm exp https

第一個pip安裝包程序實驗

  • 經常在使用Python項目和編程中,會經常使用到pip install 包名 或者使用 easy_install 包名進行有關依賴程序包安裝操作。
  • 通過查看相對應的指導文檔發現,該程序包可以自己編寫好後進行上傳到pip官網,便於其他人使用。
  • 網址:https://pypi.org/

Packaging and distributing projects(打包和發布項目)

  1. 首先, 確認滿足包安裝的需求,如Python版本環境等。
  2. 安裝"twine"模塊
pip install twine
  1. 你需要將你的項目發布上傳到PyPI。

需要上傳的項目配置

初始化文件

setup.py

  • 最重要的文件是setup.py,它存在於項目目錄的根目錄下。有關示例,請參閱PyPA示例項目中的setup.py。
  • setup.py提供兩個主要功能:
  1. 這是您的項目各個方面的配置文件。 setup.py的主要功能是它包含一個全局setup()函數。 此函數的關鍵字參數是您的項目的具體細節是如何定義的。 最相關的論點將在下面的部分進行解釋
  2. 這是用於運行與打包任務相關的各種命令的命令行界面。 要獲取可用命令的列表,請運行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參數)

  • 有關示例,請參閱PyPA示例項目中的README.md

註意使用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 模塊或者包名應該遵守以下的規則:
  1. 全小寫
  2. 不要和pypi上已有的包名重復,即使你不想公開發布你的包,因為你的包可能作為其他包的依賴包
  3. 使用下劃線分隔單詞或者什麽都不用(不要使用連字符)
  4. 現在把我們的函數變成一個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=‘[email protected]‘,
      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

第一個pip安裝包程序制作實驗