python使用setuptools打包並上傳到PyPi版本庫中

我博客的地址: http://www.reyoung.me http://www.thisisreyoung.com

最近在寫python的一個幻燈生成器。看到很多python的庫都以setup.py和easy_install安裝,便打算嘗試一下。一試之下發現極端簡單。所以做一些筆記。

參考的文章有:

準備工作 

萬事開頭難,要想你的python代碼可以使用easy_install和setup.py,那麼必須做好以下準備:

  1. 安裝python的setuptools
  2. 你的代碼必須是在package裏。也就是你的代碼不能出現在根目錄,應該在一個目錄下,且有init.py。

書寫你的setup.py腳本 

本着記錄我的想法的目的,我就不從Hello world開始了。我就直接將SlideGen這個庫的setup.py放出來。根據每行說明一下,大家應該就懂了。

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
setup(
      name='SlideGen',
      version='0.0.0.1 pre',
      packages=['slidegen'],
      author='reyoung',
      author_email='[email protected]',
      license='LGPL',
      install_requires=["PyYAML>=3.10","Markdown>=2.1.1","tornado>=2.2"],
      description="A HTML5 Slide Generator in python",
      entry_points ={
        'console_scripts':[
            'SlideGen=slidegen.SlideGen:Main'
        ]
      },
      keywords ='html5 slide generator',
      url='https://github.com/reyoung/SlideGen'
)

這個代碼需要在根目錄中寫一個叫做setup.py文件,在setup.py中包括上述代碼。
在其中,必須包含一個叫做setup的函數,在這個函數中,可以對代碼包的參數進行設置。一些參數的簡單介紹如下:

  • packages:你的代碼庫包括的package。這個packages可以是多個,也可以通過find_packages自動去做,不過手動也是不錯的。
  • install_requires:就是你的代碼庫需求的第三方庫。如果你不記得你的代碼中使用的第三方庫有什麼,可以使用yolk顯示所有在setuptools下管理的第三方庫
    安裝yolk可以使用easy_install yolk
    查詢使用easy_install管理的軟件包使用命令yolk -l
  • entry_points是自動生成的可執行程序,他會生成到Python*/Scripts/這個目錄中。其中:

    • console_scripts是生成命令行程序
    • gui_scripts是生成圖形界面程序
    • 等於右邊的格式如下:"[可執行程序名]=引入的包名.子包名.模塊名:入口函數"

使用setup.py 

安裝 

在寫好setup.py後,安裝變得異常簡單。直接使用命令python setup.py install即可以完成安裝。

調試/卸載 

我並沒有找到使用python腳本卸載的方法,但是可以使用python setup.py install --record install.txt將所有安裝的文件列在install.txt中。我們可以使用rm來刪除這些文件,達到卸載的目的。

上傳到PyPi的版本庫 

上傳pypi後,其他人就可以使用easy_install XXX來安裝了。

上傳也非常簡單,只需要一條命令。

setup.py register sdist bdist_egg upload

而使用這條命令的結果,就會將你的代碼傳到pypi上,需要注意的是:

  • 如果你沒註冊pypi帳號,在命令行中他會提示你註冊pypi帳號,跟着步驟來就好了。但是需要注意驗證電子郵箱。
  • 之後,如果你選擇記住密碼,他會在你的%HOME%\.pypirc中存儲你的密碼(linux下是~/.pypirc),需要注意的是,他存儲密碼的格式不正確,需要手工的添加[server-login]這一段,格式如下
...
[server-login]
username: XXXXXX
password: XXXXXX(明文)

這樣你就可以將python的代碼上傳到pypi版本庫中了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章