如何源碼安裝 SciPy v1.10.1 for Python3.8 Win32 科學計算擴展庫
SciPy 是可以為數學、科學、工程、等領域,提供基礎算法的開源 Python 擴展庫。
注意: 由於 SciPy 編譯過程復雜、問題多,很難成功,建議使用預構建包 (或迴退到使用舊版)。
本次有編譯 SciPy v1.8.1 (有修正缺失文件路徑, 後麵編譯 Fortran 相關源文件通不過)、1.9.3 (無法修正缺失文件路徑)、1.10.1 (無法修正缺失文件路徑),均未取得成功。
若不使用微軟 Windows 10 en-US 版進行編譯,一開始就會齣現 UnicodeDecodeError 異常 導緻無法繼續。
需要安裝 16.0 v2019 以上 Visual Studio C/C++ Build Tools en-US 官方完整版。
點擊 網盤 (提取碼: tyc0) 鏈接, 下載 v2019 或更高版本 Visual Studio C/C++ Build Tools。
點擊 網盤 (提取碼: hr7k) 鏈接, 下載 i686-12.2.0-release-win32-dwarf-msvcrt-rt_v10-rev2.7z 。
將下載文件 i686-12.2.0-release-win32-dwarf-msvcrt-rt_v10-rev2.7z 解壓到以下目錄
D:/mingw32/
D:/mingw32/bin/ 目錄下有 gfortran.exe 編譯器可執行文件;把以下字符串
D:/mingw32/bin/
添加到 控製颱配置 對話框/ 工作目錄 文本視圖。
點擊 網盤 (提取碼: 35gb) 鏈接, 下載 cmake-3.29.4-windows-i386.msi 。
將下載文件 cmake-3.29.4-windows-i386.msi 安裝到以下目錄
D:/CMake/
D:/CMake/bin/ 目錄下有 cmake.exe 編譯器可執行文件; 把以下字符串
D:/CMake/bin/
添加到 控製颱配置 對話框/ 工作目錄 文本視圖。
在 控製颱 選項卡鍵入 meson v1.4.1 依賴庫安裝命令:
Python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade meson
將 meson 安裝到 Python 目錄下。
Python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade --user meson
將 meson 安裝到當前用戶 python 目錄 (如 C:/Users/用戶名/AppData/Local/python/) 下。
在 控製颱 選項卡鍵入 pybind11 v2.12.0 依賴庫安裝命令:
Python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pybind11
將 pybind11 安裝到 Python 目錄下。
Python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade --user pybind11
將 pybind11 安裝到當前用戶 python 目錄 (如 C:/Users/用戶名/AppData/Local/python/) 下。
在 控製颱 選項卡鍵入 cython v0.29.27 依賴庫安裝命令:
Python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade cython==0.29.27
將 cython 安裝到 Python 目錄下。
Python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade --user cython==0.29.27
將 cython 安裝到當前用戶 python 目錄 (如 C:/Users/用戶名/AppData/Local/python/) 下。
在 控製颱 選項卡鍵入 numpy v1.22.4 (v1.23.0 將棄用 numpy.distutils, Python v3.12 將移除 distutils 內置模塊) 依賴庫安裝命令:
Python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade cython==1.22.4
將 numpy 安裝到 Python 目錄下。
Python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade --user cython==1.22.4
將 numpy 安裝到當前用戶 python 目錄 (如 C:/Users/用戶名/AppData/Local/python/) 下。
在 控製颱 選項卡鍵入 pythran v0.16.1 依賴庫安裝命令:
Python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pythran
將 pythran 安裝到 Python 目錄下。
Python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade --user pythran
將 pythran 安裝到當前用戶 python 目錄 (如 C:/Users/用戶名/AppData/Local/python/) 下。
在 控製颱 選項卡,鍵入以下命令將 setuptools 內置庫版本切換到 70.0.0 或更高版本:
Python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade setuptools==70.0.0
numpy v1.22.4 依賴庫要求必須使用 setuptools v70.0.0。
BLAS 比 Lapack 中的 netlib Blas 性能更好。
BLAS 是 Basic Linear Algebra Subprograms 的縮寫,中文譯為 基本綫性代數子程序 。
點擊 網盤 (提取碼: 1y0s) 鏈接, 下載 OpenBLAS-0.3.27.tar.gz 源代碼;將 OpenBLAS-0.3.27.tar.gz 解壓到以下目錄
D:/OpenBLAS-0.3.27/
在 控製颱 選項卡鍵入下列命令,以共享庫方式編譯 OpenBLAS:
cd D:/OpenBLAS-0.3.27 mkdir build && cd build cmake .. -G "MinGW Makefiles" -D CMAKE_INSTALL_PREFIX=D:/OpenBLAS-0.3.27 -D BUILD_SHARED_LIBS=ON mingw32-make -j mingw32-make install
編譯完成後,為當前用戶添加以下環境變量 (需要重啓電腦)
OPENBLAS = D:\OpenBLAS-0.3.27\lib
或添加到 控製颱配置 對話框/更多/ 添加變量 文本視圖 (不用重啓電腦)。
點擊 網盤 (提取碼: 1y0s) 鏈接, 下載 lapack-3.12.0.tar.gz 源代碼;將 lapack-3.12.0.tar.gz 解壓到以下目錄
D:/lapack-3.12.0/
在 控製颱 選項卡鍵入下列命令,以共享庫方式編譯 lapack:
cd D:/lapack-3.12.0 mkdir build && cd build cmake .. -G "MinGW Makefiles" -D CMAKE_INSTALL_PREFIX=D:/lapack-3.12.0 -D BUILD_SHARED_LIBS=ON -D LAPACKE=ON -D CBLAS=ON mingw32-make -j mingw32-make install
或以靜態庫方式編譯 lapack:
cd .. && rmdir /s /q build && mkdir build && cd build cmake .. -G "MinGW Makefiles" -D CMAKE_INSTALL_PREFIX=D:/lapack-3.12.0 -D BUILD_SHARED_LIBS=OFF -D LAPACKE=ON -D CBLAS=ON mingw32-make -j mingw32-make install
編譯完成後,為當前用戶添加以下環境變量 (需要重啓電腦)
LAPACK = D:\lapack-3.12.0\bin LAPACK_SRC = D:\lapack-3.12.0\SRC BLAS = D:\lapack-3.12.0\bin BLAS_SRC = D:\lapack-3.12.0\SRC
或添加到 控製颱配置 對話框/更多/ 添加變量 文本視圖 (不用重啓電腦)。
點擊 網盤 (提取碼: 1y0s) 鏈接, 下載 boost_1_85_0.7z 源代碼;將 boost_1_85_0.7z 解壓到以下目錄
D:/boost_1_85_0/
在 控製颱 選項卡鍵入下列命令,以共享庫方式編譯 Boost:
cd D:/boost_1_85_0 bootstrap.bat # 編譯生成 b2.exe b2 --help b2 stage --build-type=complete --toolset=gcc --stagedir="D:\boost_1_85_0\build" link=shared runtime-link=shared threading=multi debug release
迴到 控製颱 選項卡,把以下字符串
D:/boost_1_85_0/bulid/mingw/lib/
添加到 控製颱配置 對話框/ 工作目錄 文本視圖。
點擊 網盤 (提取碼: 1y0s) 鏈接, 下載 scipy-1.10.1.zip 源代碼。
將 scipy-1.10.1.zip 解壓到以下目錄
D:/Python38-32/scipy-1.10.1/
迴到 控製颱 選項卡,把以下字符串
D:/Python38-32/ D:/Python38-32/Scripts/
添加到 控製颱配置 對話框/ 工作目錄 文本視圖。
鍵入以下 DOS 命令 進入 scipy v1.10.1 源碼目錄:
cd D:/Python38-32/scipy-1.10.1/
鍵入以下 Python 擴展模塊通用編譯命令,開始編譯 scipy v1.10.1 源碼:
python setup.py bdist_wheel python setup.py build
UnicodeDecodeError: 'gbk' codec can't decode byte 0x93 in position 52813: illegal multibyte sequence
將 scipy-1.10.1/scipy/stats/_generate_pyx.py 文件中的以下源代碼
def make_unuran(srcdir, outdir): """Substitute True/False values for NPY_OLD Cython build variable.""" import re with open(srcdir / "unuran_wrapper.pyx.templ", "r") as src: contents = src.read() with open(outdir / "unuran_wrapper.pyx", "w") as dest: dest.write(re.sub("DEF NPY_OLD = isNPY_OLD", f"DEF NPY_OLD = {isNPY_OLD()}", contents))
修改成
def make_unuran(srcdir, outdir): """Substitute True/False values for NPY_OLD Cython build variable.""" import re with open(srcdir / "unuran_wrapper.pyx.templ", "r", errors="ignore") as src: contents = src.read() with open(outdir / "unuran_wrapper.pyx", "w") as dest: dest.write(re.sub("DEF NPY_OLD = isNPY_OLD", f"DEF NPY_OLD = {isNPY_OLD()}", contents))
unuran_wrapper.pyx:109:9: Decoding error, missing or incorrect coding=<encoding-name> at top of source (cannot decode with encoding 'utf-8': invalid continuation byte)
注意: 若存在此問題且無法解決,請使用微軟 Windows 10 en-US 版進行編譯。
版權聲明: 本文為獨傢原創稿件,版權歸 樂數軟件 ,未經許可不得轉載。