從 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 開發套件.
基本安裝步驟如下:
-
從 https://sourceforge.net/projects/mingw-w64/files/latest/download?source=files 下載 mingw-w64-install.exe 安裝後 ,配合其擷取 gcc.exe 路徑, 設為可攜.
-
msys 則取用先前可攜舊版本, 放至 y:\msys, 且 make.exe 位於 y:\msys\bin 目錄中.
-
從 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
-
將 libpython35.a 複製到 Anaconda3\libs 目錄中
-
下載 sip-4.18.1 原始碼, 進入目錄中後以
python configure.py --platform win32-g++
configure 後 ,以 make 完成 sip.exe 以及 sip.pyd 建立.
-
將 sip.exe 複製到 y:\Anaconda3 目錄中
-
將 sip.pyd 複製到 y:\Anaconda3\Lib\site-packages\ 目錄中
-
將 siplib\sip.h 複製到 y:\Anaconda3\include\ 目錄中
-
將 sip.pyi , sipconfig.py, sipdistutils.py, siputils.py 等檔案, 複製到 y:\Anaconda3\Lib\site-packages\ 目錄中
-
利用 pip install PyQt5 安裝 PyQt5, 利用 pip install QScintilla 安裝 QScintilla2
-
下載 Eric6 原始碼, 進入目錄後利用
python install.py
完成 Eric6 安裝, 之後可使用 eric6 啟動
- 利用 conda 安裝 peewee ORM 模組
conda install -c conda-forge peewee=2.8.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.
打包過程共有兩個步驟:
- pyinstaller -w --onedir launch_pyslvs.py
-w 表示要建立 gui 程式套件.
所產生的包裝程式位於 dist 目錄中
- 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