1. 程式人生 > >Python模組安裝與setup.py解析

Python模組安裝與setup.py解析

Python模組安裝

1. 單檔案模組

直接把檔案拷貝到$python_dir/lib

2. 多檔案模組,帶setup.py

python setup.py install

3. egg檔案

1) 下載ez_setup.py,執行python ez_setup

2) easy_install *.egg

雖然Python的模組可以拷貝安裝,但是一般情況下推薦製作一個安裝包,即寫一個setup.py檔案來安裝。

setup.py檔案的使用:

% python setup.py build #編譯 

% python setup.py install    #安裝 

% python setup.py sdist     #製作分發包 

% python setup.py bdist_wininst #製作windows下的分發包 

% python setup.py bdist_rpm 

setup.py檔案的編寫 

setup.py中主要執行一個 setup函式,該函式中大部分是描述性東西,最主要的是packages引數,列出所有的package,可以用自帶的find_packages來動態獲取package。所以setup.py檔案的編寫實際是很簡單的。

簡單的例子: 

setup.py檔案

 from setuptools import setup, find_packages

 setup(

        name = " mytest " ,

        version = " 0.10 " ,

        description = " My test module " ,

        author = " Robin Hood " ,

        url = " http://www.csdn.net " ,

        license = " LGPL " ,

        packages = find_packages(),

        scripts = [ " scripts/test.py " ],

        )

mytest.py

import sys

 def get():

      return sys.path 

scripts/test.py

import os 

 print os.environ.keys()  

setup中的scripts表示將該檔案放到 Python的Scripts目錄下,可以直接用。 

OK,簡單的安裝成功,可以執行所列舉的命令生成安裝包,或者安裝該python包。

本機測試成功(win32-python25)!

==============================================================

setuptools它可以自動的安裝模組,只需要你提供給它一個模組名字就可以,並且自動幫你解決模組的依賴問題。一般情況下用setuptools給安裝的模組會自動放到一個字尾是.egg的目錄裡。

首先,安裝setuptools這個東西,先去下載一個指令碼: http://peak.telecommunity.com/dist/ez_setup.py 下載完後直接執行它就會幫你把setuptools給裝好。

之後,安裝模組的使用方法就是使用一個叫easy_install的命令,在Windows裡,這個命令在python安裝目錄下的scripts裡面,所以需要把scripts加到環境變數的PATH裡,這樣用起來就更方便,linux下不需要注意這個問題。

安裝軟體只需要執行:easy_install 模組名

===================================================

以下內容假定已安裝好Python 2.4/2.5 

一、下載並編譯pyinstaller(只需做一次,以後可直接做第二步) 

1.下載pyinstaller,現在的版本是1.3 

(1)wget http://pyinstaller.hpcf.upr.edu/source/1.3/pyinstaller_1.3.tar.gz 

2.解包進入原始碼目錄 

(1)tar zxv pyinstaller_1.3.tar.gz 

(2)cd pyinstaller-1.3/source/linux 

3.編譯原始碼 

(1)python Make.py  生成python的 .pyc檔案 

如無錯誤,則出現如下提示(只有一行): 

Now run "make" to build the targets: ../../support/loader/run ../../support/loader/run_d 

(2)make 連線生成linux的 .o 檔案 

4.生成編譯配置檔案 

(1)python Configure.py  生成config.dat配置檔案 

二、編譯獨立執行的python可執行檔案 

1.生成spec檔案 

python pyinstaller-1.3/Makespec.py --onefile --upx linuxlaptop.py 

引數說明: 

--onefile 生成單檔案 

--upx          生成壓縮的檔案(可減小執行檔案體積,需先安裝upx軟體包) 

2.生成最終的可執行檔案 

python pyinstaller-1.3/Build.py linuxlaptop.spec 

執行完成後將在當前目錄生成可執行的linuxlaptop檔案,如有問題歡迎與我交流:linuxlaptop.cn。

========================================================================

以前從來沒有試過把Python打包,昨天試了試,發現打包也是一件挺容易的事情.Python打包有很多種選擇.cx_Freeze是一種, py2exe也可以,還有一個pyinstaller.我用的是cx_Freeze,而py2exe因為sf實在太慢連不上.所以沒辦法,只好先用可以下載的.cx_Freeze的資料比較少,不過不是太痛苦,因為好像cx會比py2exe簡便易用,而且好像是跨平臺的,不錯不錯.

    cx_Freeze的用法就一個命令FreezePython.exe,打包也很快捷:

    FreezePython.exe  --install-dir="/your/path/to/install" app.py 

    然後就會把app.py以及其依賴的所有模組,包和庫全部歸整後放到--install-dir 所指的路徑下.

    碰到兩個問題,一個是檔案編碼,一開始總是說找不到gb2312的編碼,後面google了一下,發現要這麼做:     

在app.py中新增from encodings import gbk 一句,然後就可以了.    

如果用到了gettext,要注意po檔案中的

    "Content-Type: text/plain; charset=gbk "

    "Content-Transfer-Encoding: cp936 "     

這兩句要這樣寫,字符集要用gbk,不要用gb2312.

    另一個問題是控制檯隱藏:   

預設cx_Freeze打包後都是控制檯程式,就算你打包一個wxPython程式,也會有一個黑黑的控制檯在後面做背景,要去掉控制檯就要這樣:

    FreezePython.exe --install-dir="yourinstallpath" --base-binary=Win32GUI.exe app.py 

    加了--bash-binary 後就可以只執行前臺的介面了,不過如果程式出錯,會彈出一個錯誤對話方塊,說找不到traceback模組.

    這就要在app.py檔案中加一句:

    import traceback

    把錯誤反饋以對話方塊形式彈出.