Python包管理工具setuptools詳解(基礎)__Python

來源:互聯網
上載者:User
原文章:點擊開啟連結
0.什麼是setuptools

setuptools是Python distutils增強版的集合,它可以協助我們更簡單的建立和分發Python包,尤其是擁有依賴關係的。使用者在使用setuptools建立的包時,並不需要已安裝setuptools,只要一個啟動模組即可。

功能亮點: 利用EasyInstall自動尋找、下載、安裝、升級依賴包 建立Python Eggs 包含包目錄內的資料檔案 自動包含包目錄內的所有的包,而不用在setup.py中列舉 自動包含包內和發布有關的所有相關檔案,而不用建立一個MANIFEST.in檔案 自動產生經過封裝的指令碼或Windows執行檔案 支援Pyrex,即在可以setup.py中列出.pyx檔案,而終端使用者無須安裝Pyrex 支援上傳到PyPI 可以部署開發模式,使項目在sys.path中 用新命令或setup()參數擴充distutils,為多重專案發布/重用擴充 在項目setup()中簡單聲明entry points,建立可以自動探索擴充的應用和架構

總之,setuptools就是比distutils好用的多,基本滿足大型項目的安裝和發布 1.安裝setuptools

1) 最簡單安裝,假定在ubuntu下

sudo apt-get install python-setuptools

2) 啟動指令碼安裝

wget http://peak.telecommunity.com/dist/ez_setup.pysudo python ez_setup.py
2.建立一個簡單的包

有了setuptools後,建立一個包基本上是無腦操作

cd /tmp mkdir democd demo

在demo中建立一個setup.py檔案,寫入

from setuptools import setup, find_packagessetup(    name = "demo",    version = "0.1",    packages = find_packages(),    )


執行python setup.py bdist_egg即可打包一個test的包了。

demo|-- build|   `-- bdist.linux-x86_64|-- demo.egg-info|   |-- dependency_links.txt|   |-- PKG-INFO|   |-- SOURCES.txt|   `-- top_level.txt|-- dist|   `-- demo-0.1-py2.7.egg`-- setup.py

在dist中產生的是egg包

file dist/demo-0.1-py2.7.eggdist/demo-0.1-py2.7.egg: Zip archive data, at least v2.0 to extract

看一下產生的.egg檔案,是個zip包,解開看看先

upzip -l dist/demo-0.1-py2.7.eggArchive:  dist/demo-0.1-py2.7.egg  Length      Date    Time    Name---------  ---------- -----   ----        1  2013-06-07 22:03   EGG-INFO/dependency_links.txt        1  2013-06-07 22:03   EGG-INFO/zip-safe      120  2013-06-07 22:03   EGG-INFO/SOURCES.txt        1  2013-06-07 22:03   EGG-INFO/top_level.txt      176  2013-06-07 22:03   EGG-INFO/PKG-INFO---------                     -------      299                     5 files

我們可以看到,裡面是一系列自動產生的檔案。現在可以介紹一下剛剛setup()中的參數了 name 包名 version 版本號碼 packages 所包含的其他包

要想發布到PyPI中,需要增加別的參數,這個可以參考官方文檔中的例子了。 3.給包增加內容

上面產生的egg中沒有實質的內容,顯然誰也用不了,現在我們稍微調色一下,增加一點內容。

在demo中執行mkdir demo,再建立一個目錄,在這個demo目錄中建立一個__init__.py的檔案,表示這個目錄是一個包,然後寫入:

#!/usr/bin/env pythondef test():    print 'Hello World!'if __name__ == '__main__':    test()


現在的主目錄結構為下:

demo|-- demo|   `-- __init__.py`-- setup.py

再次執行python setup.py bdist_egg後,再看egg包

Archive:  dist/demo-0.1-py2.7.egg  Length      Date    Time    Name---------  ---------- -----   ----        1  2013-06-07 22:23   EGG-INFO/dependency_links.txt        1  2013-06-07 22:23   EGG-INFO/zip-safe      137  2013-06-07 22:23   EGG-INFO/SOURCES.txt        5  2013-06-07 22:23   EGG-INFO/top_level.txt      176  2013-06-07 22:23   EGG-INFO/PKG-INFO       95  2013-06-07 22:21   demo/__init__.py      338  2013-06-07 22:23   demo/__init__.pyc---------                     -------      753                     7 files

這回包內多了demo目錄,顯然已經有了我們自己的東西了,安裝體驗一下。

python setup.py install

這個命令會講我們建立的egg安裝到python的dist-packages目錄下,我這裡的位置在

tree /usr/local/lib/python2.7/dist-packages/demo-0.1-py2.7.egg

查看一下它的結構:

/usr/local/lib/python2.7/dist-packages/demo-0.1-py2.7.egg|-- demo|   |-- __init__.py|   `-- __init__.pyc`-- EGG-INFO    |-- dependency_links.txt    |-- PKG-INFO    |-- SOURCES.txt    |-- top_level.txt    `-- zip-safe

開啟python終端或者ipython都行,直接匯入我們的包

>>> import demo>>> demo.test()hello world!>>>

好了,執行成功。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.