星期二, 6月 06, 2017
[Python] Python 和 egg關係
如果用python寫好一個功能,那要如何release出來給其他人用,
像c是寫好source code再去寫makefile給其他人build成so檔,
而python是build成egg檔來安裝使用,
一開始要先有setup.py檔,裡面會寫一些package的資訊,
像是作者名稱,EMAIL等等。
但記得在變數“name”他是指package名稱,
所以你等下要建一個同樣名字的資料夾,並且function code要丟在裡面。
而在package資料夾內一定要有個“__init__.py”來代表這資料夾是package,
我在裡面寫了個test function來印hello,
接下來就是要如何打包這個package了,
/ # python setup.py bdist_egg
打包有很多種格式,現在測試的是egg檔,
所以最後一個參數要加“bdist_egg”,
包成egg檔可以支援“easy_install”來安裝,
或者可以打包成tar.gz檔,來支援"pip"安裝,
/ # python setup.py sdist
你打包完後會產生dist資料夾,裡面是放著你打包完的東西,
因為我試了egg和tar.gz的command所以有產生兩個。
root@4164a09b2256:/python_code/PackageEGG# ls dist/
vodka-11.10-py2.7.egg vodka-11.10.tar.gz
其實可以file一下檔案,
root@4164a09b2256:/python_code/PackageEGG/dist# file *
vodka-11.10-py2.7.egg: Zip archive data, at least v2.0 to extract
vodka-11.10.tar.gz: gzip compressed data, was "dist/vodka-11.10.tar", last modified: Tue Jun 6 09:40:13 2017, max compression
可以看出他們都是壓縮檔,所以可以直接解壓縮出來看。
root@4164a09b2256:/python_code/PackageEGG/dist# unzip vodka-11.10-py2.7.egg
Archive: vodka-11.10-py2.7.egg
inflating: EGG-INFO/top_level.txt
inflating: EGG-INFO/SOURCES.txt
inflating: EGG-INFO/dependency_links.txt
inflating: EGG-INFO/zip-safe
inflating: EGG-INFO/PKG-INFO
inflating: vodka/__init__.py
inflating: vodka/__init__.pyc
其實這些內容和vodka.egg-info資料夾內的檔案一樣,
Note:
記得在setup.py內加上“packages = find_packages(),”這樣他才會包入package directory,
打包完package就會像這樣。
之後我再去用install的方式來安裝他,
/# python2.7 setup.py install
就可以看到已經安裝成功,
root@4164a09b2256:/python_code/PackageEGG# ls /usr/local/lib/python2.7/dist-packages/
easy-install.pth vodka-11.10-py2.7.egg
這時來測試這package的function,
root@4164a09b2256:/python_code/PackageEGG# python2.7
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from vodka import test
>>> test()
Hello, I'm vodka.
>>>
SourceCode
Ref_1
Ref_2
訂閱:
張貼留言 (Atom)

沒有留言:
張貼留言