發表文章

Python 使用 cx_freeze 來打包 PyQt 套件

圖片
我們之前已經使用 Py2exe、Pyinstaller 等套件來打包 PyQt 變成 exe 執行檔,其實 Python 還有另一個套件稱為 cx_freeze ,既然先前的方式都成功了,這次我們也不例外就使用 cx_freeze 來玩玩打包 PyQt 變成 exe。以下的範例是使用 python 3.1 來執行,不過實際測試過 python 2.7 一樣也能執行。 將python打包成exe的程序有很多,比如py2exe、PyInstaller等等,但是到目前為止,它們對python3.1支持的都不好,所以這裡我要介紹一下cx_freeze 4.2.2,它還能支持跨平台,可以在windows和linux運行。 cx_freeze的下載網址為 http://sourceforge.net/projects/cx-freeze/files/ ,要根據已安裝的python版本進行選擇。比如我使用的是python3.1,所以就要下載cx_Freeze-4.2.2.win32-py3.1.msi這個文件。運行這個安裝包後,相關程序就會被拷貝到python的目錄下。主要在兩個地方,一個是C:/Python31/Scripts,另一個是C:/Python31/Lib/site-packages/cx_Freeze 在以前版本的cx_Freeze中,是通過FreezePython.py這個腳本將py轉換為exe,而在4.2.2這個版本中,FreezePython.py已經不見了,主要的工作交給了C:/Python31/Scripts下的cxfreeze.bat來完成。 使用cx_Freeze完成python打包exe主要有兩種方法: 第一種,直接運行cxfreeze.bat通過: 先進入cmd命令行,進入C:/Python31/Scripts目錄,然後運行cxfreeze.bat -h 就可以看到它的使用說明了。我們可以用cx_freeze自己的sample做個試驗。 進入到c:/python31/scripts/下,運行 cxfreeze C:/Python31/Lib/site-packages/cx_Freeze/samples/PyQt4/PyQt4app.py --install-dir=d:/123 pytqt4app.py就會被打包成exe,並且它所用到的庫文件,...

Python 利用 pyinstaller 打包 PyQt 視窗軟體 exe 執行檔

圖片
先前介紹過利用 Py2exe 來打包 PyQt 這次我們使用另一個套件 pyinstaller 來打包 PyQt 網路上的文件介紹到使用該方法較簡單,但實際操作的過程中一波三折,老實講各種文件做法好幾種,結果通通失敗,最終誤打誤撞試成功,本次則詳細記錄操作過程,如下: 首先系統環境介紹 windows7 64 bit python 2.7 (32 bit) pywin32-220.win32-py2.7.exe (直接去裝這個版本) PyInstaller-3.1.1 (我是用這個版本) 下載 pyinstaller 後,其實這個套件也不能說是個套件,使用方法又非常奇怪,建議放在c:/底下,使用 cmd 切換到該目錄,執行命令 python setup.py install 看到安裝成功後,請自行到 C:\Python27\Scripts 檢查是否出現 pyinstaller.exe ,若一切都順利,才可以進行打包工作。 以上環境設定好了,接下來就是回到 pyinstaller 資料夾中,先更改 pyinstaller.py 文件如下 #! /usr/bin/env python #----------------------------------------------------------------------------- # Copyright (c) 2013, PyInstaller Development Team. # # Distributed under the terms of the GNU General Public License with exception # for distributing bootloader. # # The full license is in the file COPYING.txt, distributed with this software. #----------------------------------------------------------------------------- """ Main command-line interface to PyInstaller. """ if __na...

Python py2exe 打包成單一執行檔

圖片
如果想要打包成單一執行檔該怎麼改寫語法呢? # -*- coding:utf-8 -*- from distutils.core import setup import py2exe setup( zipfile=None, windows=[{"script" : "PyQtStandarDialog.py", "icon_resources": [(1, "test.ico")] }], options={"py2exe" : {"bundle_files": 1,"includes" : ["sip", "PyQt4"]}} ) ok 上面的程式我們則是將原先用 PyQt 寫的軟體包成 exe 其中需要加上 bundle_files 參數,因為我不要 zipfile 所以參數設定 None,然後要記得 includes sip 及 PyQt4 免得發生錯誤!!

Python 利用 Py2exe 來打包製作 PyQt 成 exe 執行檔

圖片
1.下載並選擇與Python對應的位元檔(32bit與64bit),安裝好py2exe 2.把你的Python Script所在目錄打開,新建一個Setup.py檔案在此目錄下(也就是與你編寫所要打包成exe的Python script還有你寫的module,package等等),如寫了一個Script是Hello.py,並且放置在HelloPy目錄下,則setup.py也是在HelloPy下。我們以上次PyQtStandarDialog.py作為範例來說明。(除了 Py2exe 另外還有 pyinstaller 套件模組也能用來打包安裝執行檔 ) # -*- coding:utf-8 -*- from distutils.core import setup import py2exe setup( windows=[{"script" : "PyQtStandarDialog.py"}], options={"py2exe" : {"includes" : ["sip", "PyQt4"]}} ) 在 cmd 下 python setup .py py2exe 指令 完成後會產生下列資料夾及檔案

Python 使用 PyQt 開發 windows 視窗軟體

圖片
當我們想要利用 Python 開發 windows 視窗軟體其實有幾種套件可以使用,PyQt、PyGTK、wx、tkinter、pywin等,其中我們採用 PyQt 來小牛刀試一下 windows 視窗軟體開發,相關的Qt 參數及函式都可以在官網上查詢到,本次我們則是安裝 windows 版 python 2.7 (32 bit) 及 PyQt4 python2.7 win 32 版套件,對照安裝好的Python版本是2.7還是3.3 與位元版本 選擇對應的PyQt,這邊我的環境是Python 2.7.9 32bit,所以選擇PyQt4的 PyQt4-4.11.3-gpl-Py2.7-Qt4.8.6-x32 ,此安裝檔內已經包含SIP與Qt4.8.6,所以事先不需要安裝SIP與Qt,如果要開發給python用的UI檔案,可以使用Qt Creator來設計UI。 或是在PyQt中會提供designer.exe這個程式,是Qt的一部分,一起提供進來,方便做UI的開發 轉換.ui檔為.py檔作為module使用 產生完後的.ui檔,PyQt還提供一個Command指令可以把ui檔案轉換成.py檔,方便我們直接在Python中調用。 使用CMD切換到設計好的ui所在目錄下,執行此指令:     pyuic4 your_qt_ui.ui -o output_name.py 即可產生出py檔,pyuic4 是PyQt預設代的指令,此檔案的路徑在C:Python27Libsite-packagesPyQt4中,為一個bat檔案,但是實際調用的是C:Python27Libsite-packagesPyQt4uic下的pyuic.py檔案。 引用ui的py範例 我原先的ui檔案名稱為fmwp_mainwindow.ui,產生完的名稱是fmwp_mainwindow.py,這邊我的主要script檔案為FMWPModel.py 於是在FMWPModel.py中一開始使用fmwp_mainwindow.py的程式如下:     import fmwp_mainwindow from fmwp_mainwindow import Ui_MainWindow from PyQt4.QtGui import ...

PHP教學 - 利用 php 來定期執行想要跑的程式

我們都知道利用 linux 可以跑 crontab 利用windows 可以跑排程,有沒有甚麼 php 函式,是可以拿來執行排程的,答案是有的我們可以利用 ignore_user_abort(),set_time_limit(0),sleep($interval) 範例如下: <?php ignore_user_abort();//關掉瀏覽器,PHPscripts也可以繼續執行. set_time_limit(0);// 通過set_time_limit(0)可以讓程式無限制的執行下去 $interval=60*30;// 每隔半小時執行 do{     echo "<script type='text/javascript'>";     echo "alert('這是我的php');";     echo "</script>";  //這裡是你要執行的程式碼  sleep($interval);// 等待5分鐘 }while(true); ?> 不過我這程式寫的是來亂的,因為他會不斷的去alert,或許我們可以應用在自行開發的系統中,規劃個表單讓使用者可以自行選擇要執行排程的時間,省去使用者還要利用 crontab 進行設定的困擾。

PHP教學 - 簡單的圖片增加浮水印

圖片
先前曾經分享過圖片上傳增加浮水印,現在再來分享另一個浮水印的程式如下: <?php  $ori_img = "images/3.jpg"; //原圖  $water_img = "logo.png"; //水印  $new_img = "images/daixiaorui.jpg"; //產生水印後的圖片  $original = getimagesize($ori_img); //得到圖片的訊息,可以print_r($original)發現它就是一個陣列  $watermark = getimagesize($water_img);  $s_original = imgCreateFrom($ori_img, $original[2]); //$original[2]是圖片類型,其中1表示gif、2表示jpg、3表示png  $s_watermark = imgCreateFrom($water_img, $watermark[2]);  $posX = $original[0] - $watermark[0]-10; //X坐標(右下角)  $poxY = $original[1] - $watermark[1]-6; //Y坐標(右下角)  //打水印  imagecopy($s_original, $s_watermark, $posX, $poxY, 0, 0, $watermark[0], $watermark[1]);  header("Content-type:image/jpg");  //選擇圖片來源(若不想顯示在網頁上可以註解掉)  imagejpeg($s_original);   //向瀏覽器輸出圖片(若不想顯示在網頁上可以註解掉)  $loop = imagejpeg($s_original, $new_img); //產生新的圖片(jpg格式),如果用imagepng可以產生png格式  if($loop){   echo "水印增加成功!";  }  //根據文件類型 新增一個新圖像  function imgCreat...