KMOL 的程式開發環境, 可知在 2016 年是以 Ubuntu 16.04 操作系統為主, 但是為了在課程中推廣 Python3 與 PyQt5 的應用, 因此特別打造 64 位元 Windows 環境下的 Eric6 可攜程式開發環境.

先安裝 mingw 與 msys, 之後再安裝 sip-4.18.1 、PyQt5_gpl-5.7 與 QScintilla2, eric6, peewee, dxfwrite 等模組, 即可以 eric6 開啟 eric6 開發套件.

基本安裝步驟如下:

  1. 從 https://sourceforge.net/projects/mingw-w64/files/latest/download?source=files 下載 mingw-w64-install.exe 安裝後 ,配合其擷取 gcc.exe 路徑, 設為可攜.

  2. msys 則取用先前可攜舊版本, 放至 y:\msys, 且 make.exe 位於 y:\msys\bin 目錄中.

  3. 從 Anaconda3 目錄中複製 python35.dll 並使用 mingw32\bin 目錄中的 gendef.exe

以 gendef python35.dll 建立 python35.def

並以 dlltool --dllname python35.dll --def python35.def --output-lib libpython35.a

建立編譯 sip 所需的 libpython35.a

  1. 將 libpython35.a 複製到 Anaconda3\libs 目錄中

  2. 下載 sip-4.18.1 原始碼, 進入目錄中後以

python configure.py --platform win32-g++

configure 後 ,以 make 完成 sip.exe 以及 sip.pyd 建立.

  1. 將 sip.exe 複製到 y:\Anaconda3 目錄中

  2. 將 sip.pyd 複製到 y:\Anaconda3\Lib\site-packages\ 目錄中

  3. 將 siplib\sip.h 複製到 y:\Anaconda3\include\ 目錄中

  4. 將 sip.pyi , sipconfig.py, sipdistutils.py, siputils.py 等檔案, 複製到 y:\Anaconda3\Lib\site-packages\ 目錄中

  5. 利用 pip install PyQt5 安裝 PyQt5, 利用 pip install QScintilla 安裝 QScintilla2

  6. 下載 Eric6 原始碼, 進入目錄後利用

python install.py

完成 Eric6 安裝, 之後可使用 eric6 啟動

  1. 利用 conda 安裝 peewee ORM 模組

conda install -c conda-forge peewee=2.8.1

  1. 利用 pip install dxfwrite 安裝模組

上述步驟所完成的 Eric6 可攜整合程式開發環境位於 https://service.mde.tw:8443/downloads/kmol/, 僅支援授權用戶下載.

接下來, 為了打包 Python3 與 PyQt5 所建立的程式套件, 利用 conda 安裝 pyinstaller.

conda install -c acellera pyinstaller=3.2.3

並且利用 pip install cx_freeze 安裝 cx_freeze.

打包過程共有兩個步驟:

  1. pyinstaller -w --onedir launch_pyslvs.py

-w 表示要建立 gui 程式套件.

所產生的包裝程式位於 dist 目錄中

  1. python setup.py build

setup.py 內容:

from cx_Freeze import setup, Executable
import sys

build_exe_options = {"packages": ["os"], "includes": ["PyQt5"], "excludes": ["tkinter"]}

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(
    name = 'solvespack',
    version = '1',
    description = '.',
    executables=[Executable('launch_pyslvs.py', base=base)],
    options={"build_exe":build_exe_options},
)

所產生的包裝程式位於 build 目錄中.

最後, 合併兩個套件所建立的包裝檔案, 並以 Pyinstaller 所產生的 .exe 為主體, 啟動 PyQt5 視窗程式.


Comments

comments powered by Disqus