如何源码安装 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 版进行编译。
版权声明: 本文为独家原创稿件,版权归 乐数软件 ,未经许可不得转载。