Pyslvs v0.6 在兩個平台的編譯流程:
- 環境與安裝套件
- Git
- Cython
- Windows 編譯工具
- SWIG
- PyQt
- Eric IDE
- 編譯步驟
- 演算法函式庫
- Solvespace 函式庫
- Pyslvs
Pyslvs v0.6 完整編譯流程
這裡說明 Pyslvs v0.6 在兩個平台的編譯流程,目標是從,若是單一平台的步驟會特別標示。
- Ubuntu 採用 Ubuntu 16.04 (64 Bit) Python 3.5 做示範。
- Windows 採用 Windows 8 (Build 9600 64 Bit) Python 3.6.1 做示範。
- Qt 與 PyQt 皆為 5.8.0。
目前 Windows 的 PyQt 5.8 沒有支援 Anaconda,可能得日後更新才會解決問題。
而且使用一般的 Python 編譯,Pyslvs 的體積可以減少很多(377MB > 88MB)
以下是自行編譯分部程式庫與主程式可執行檔
環境與安裝套件
本篇介紹需要使用的工具與其安裝方法。
Git
進行遠端檔案版本控制的工具。
-
Ubuntu
使用 apt 安裝。
$sudo apt install git
-
Windows
下載新版 Git。
Cython
將 Python 語言轉換成 C++ 以增進運算速度的套件。
使用 pip 安裝 Cython。
$sudo pip3 install cython
>pip install cython
Windows 編譯工具
使用 Windows 的必須安裝 GNU 工具包以使用 Make 功能。
下載新版 MinGW(32 Bit):
https://sourceforge.net/projects/mingw-w64/files/latest/download?source=files
另外必須安裝 Microsoft Visual Studio 以編譯 64 位元的 Cython 程式碼。
只需要安裝 Windows tool kit 就好。Python
https://www.visualstudio.com/downloads/
SWIG
將 C 或 C++ 配上自訂接口後,可以變成其他高階語言函式庫的套件。
-
Ubuntu
使用 apt 安裝。
$sudo apt install swig
-
Windows
下載新版 SWIG:
http://www.swig.org/download.html
解壓縮到安裝位置,並將該資料夾加入環境變數。
例如:
C:\swigwin-3.0.12
PyQt
由官方網站下載 Qt 的安裝檔:
選擇 PyQt 有對應的最新版本,否則會無法對應 API。
-
Ubuntu 安裝後請將 Qt 函式庫位址加入
~/.bashrc
環境變數。例如:
export QTDIR=/opt/Qt/5.8/gcc_64/
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${QTDIR}/lib/
export PATH=${QTDIR}/bin:${PATH}
-
Windows 安裝後請將 Qt 函式庫位址加入環境變數。
例如:
C:\Qt\5.8\msvc2015_64\bin
。
接下來安裝 PyQt。
Ubuntu
需先更新 SIP,這個部分無法用 pip 操作。
確認並刪除 Python 套件安裝位置的 SIP 檔案,例如:
$sudo rm -f /usr/lib/python3/dist-packages/sip*
下載新版 SIP:
https://riverbankcomputing.com/software/sip/download
解壓縮後安裝:
$python3 configure.py
$sudo make install
核對與 Python 內的版本:
$sip -V
>>import sip
>>print(sip.SIP_VERSION_STR)
下載新版 PyQt5:
https://riverbankcomputing.com/software/pyqt/download5
解壓縮後安裝:
$python3 configure.py
$sudo make install
下載新版的 QScintilla 2:
https://riverbankcomputing.com/software/qscintilla/download
解壓縮後安裝 3 個部分:
-
本體
$cd Qt4Qt5
$qmake qscintilla.pro
$sudo make install
-
Designer
$cd designer-Qt4Qt5
$qmake designer.pro
$sudo make install
-
Python bundings
$cd Python
$python3 configure.py --pyqt=PyQt5
$sudo make install
Windows
使用 pip 安裝 PyQt5。
>pip install pyqt5 -U
使用 pip 安裝 QScintilla 2。
>pip install qscintilla
Python 編譯工具
將 Python 程式碼編譯成可執行檔的工具。
Ubuntu
使用 PyInstaller 即可。
$sudo pip3 install PyInstaller
Windows
使用 PyInstaller 編譯主體,再用 cxFreeze 包裝函式庫。
>pip install cx_Freeze PyInstaller
Windows 如果使用官方來源有編碼錯誤,可以用下面的倉儲:
>pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
Eric IDE
若要進行程式協同,可以安裝這個 Python 編輯器。
下載新版的 Eric IDE。
http://eric-ide.python-projects.org/eric-download.html
執行其中的 install.py
即可。
$sudo python3 install.py
>python install.py
編譯步驟
下載 Pyslvs 倉儲,並進行子倉儲更新:
git clone https://github.com/KmolYuan/Pyslvs-PyQt5.git
git submodule init
git submodule update
安裝所需 Python 套件。
pip install -r requirements.txt
編譯好的函式庫複製到 core/kernel/
對應的資料夾下。
如:
- Ubuntu 的 Python 3.5 命名為
py35
。 - Windows 的 Python 3.6 命名為
py36w
。
並在 core/calculation
/calculation.py
中加入匯入名稱。
if py_nm=='36w': from ..kernel.py36w.slvs import * from ..kernel.pyslvs_generate.py36w import tinycadlib from ..kernel.pyslvs_generate.py36w.planarlinkage import build_planar from ..kernel.pyslvs_generate.py36w.rga import Genetic from ..kernel.pyslvs_generate.py36w.firefly import Firefly from ..kernel.pyslvs_generate.py36w.de import DiffertialEvolution
演算法函式庫
進入 core/kernel/pyslvs_generate/pyslvs_generate
資料夾。
make
將產生以下的函式庫:
- de (
so
orpyd
) - firefly (
so
orpyd
) - planarlinkage (
so
orpyd
) - rga (
so
orpyd
) - tinycadlib (
so
orpyd
)
Solvespace 函式庫
進入 core\kernel\python-solvespace-lite\solvespace\exposed
資料夾。
python configure.py
make
將產生以下的函式庫:
- _slvs (
so
orpyd
) - libslvs (
so
) - slvs.py
Pyslvs
在倉儲頂層目錄中。
make
編譯成功後會跳出程式執行,結束即可。
編好的執行檔位於 dist/Pyslvs
中,主程式為 launch_pyslvs
(exe
)。
可以將程式用 Debian 包裝或壓縮發佈。
Comments
comments powered by Disqus