python windows编译问题总结
本文主要介绍python windows编译过程中可能遇到的一些代表性问题,并将在今后开发过程中不断更新和补充。这里主要针对Windows系统,而且通常也是Windows系统出现问题的情况居多。运气好的时候,编译能一次就过;但往往还是会有一些异常情况。
python编译主要应用在以下场景:
(1)python库安装。
(2)py文件转pyd。
(3)……
这里以py转pyd为例。
python setup.py build_ext
1 辅助工具
1.1 Everything
可以快速搜索电脑中的问题,基本一秒之内就可以找到。官方下载链接为:voidtools
1.2 Microsoft Visual Studio
由于编译工具经常需要依赖C++,所以需要下载Microsoft Visual Studio环境,并且在Visual Studio Installer界面,选择“使用C++的桌面开发”,确保安装了至少一个版本的Windows 10 SDK,如下图所示。
2 常见错误
2.1 pyconfig.h(59): fatal error C1083: 无法打开包括文件: “io.h”: No such file or directory
pyconfig.h(59): fatal error C1083: 无法打开包括文件: “io.h”: No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
这是因为系统无法找到io.h文件,这个文件一般位于 C:\Program Files (x86)\Windows Kits\10\Include\SDK版本\ucrt文件夹下。如果没有对应的SDK版本文件夹,那么回到1.2节采用isual Studio Installer安装Windows 10 SDK。
对于出现xxx.h无法找到的情况,我们需要创建或更新INCLUDE环境变量,增加xxx.h所在文件夹路径。例如,针对本节问题,在环境变量中创建INCLUDE(如果已存在,则无需创建),新增路径“C:\Program Files (x86)\Windows Kits\10\Include\SDK版本\ucrt”。环境变量多个值之间,用英文分号“;”隔开。
修改完成之后,重新启动编译窗口,再次编译。如果仍然出现错误,可继续查看出现接下来章节所述错误。
2.2 pyconfig.h(203): fatal error C1083: 无法打开包括文件: “basetsd.h”: No such file or directory
pyconfig.h(203): fatal error C1083: 无法打开包括文件: “basetsd.h”: No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
对于出现xxx.h无法找到的情况,我们需要创建或更新INCLUDE环境变量,增加xxx.h所在文件夹路径。我们用1.1节中Everything工具搜索basetsd.h,发现其存在于文件夹“C:\Program Files (x86)\Windows Kits\10\Include\SDK版本\shared”。如果没有对应的SDK版本文件夹,那么回到1.2节采用isual Studio Installer安装Windows 10 SDK。
对于出现xxx.h无法找到的情况,我们需要创建或更新INCLUDE环境变量,增加xxx.h所在文件夹路径。例如,针对本节问题,在环境变量中创建INCLUDE(如果已存在,则无需创建),新增路径“C:\Program Files (x86)\Windows Kits\10\Include\SDK版本\shared”。环境变量多个值之间,用英文分号“;”隔开。
修改完成之后,重新启动编译窗口,再次编译。如果仍然出现错误,可继续查看出现接下来章节所述错误。
2.3 LINK : fatal error LNK1104: 无法打开文件“kernel32.lib”
LINK : fatal error LNK1104: 无法打开文件“kernel32.lib”
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x64\\link.exe' failed with exit code 1104
出现该错误,表示编译环境没有找到“kernel32.lib”。 对于出现xxx.lib无法找到的情况,我们需要创建或更新LIB环境变量,增加xxx.lib所在文件夹路径。我们用1.1节中Everything工具搜索kernel32.lib,发现其存在于文件夹“C:\Program Files (x86)\Windows Kits\10\Lib\SDK版本\um\x64”,也可以是x64、x86、arm、arm64,根据需要进行选择。如果没有对应的SDK版本文件夹,那么回到1.2节采用isual Studio Installer安装Windows 10 SDK。
修改完成之后,重新启动编译窗口,再次编译。如果仍然出现错误,可继续查看出现接下来章节所述错误。
2.4 LINK : fatal error LNK1104: 无法打开文件“ucrt.lib”
LINK : fatal error LNK1104: 无法打开文件“ucrt.lib”
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x64\\link.exe' failed with exit code 1104
出现该错误,表示编译环境没有找到“ucrt.lib”。 对于出现xxx.lib无法找到的情况,我们需要创建或更新LIB环境变量,增加xxx.lib所在文件夹路径。我们用1.1节中Everything工具搜索ucrt.lib,发现其存在于文件夹“C:\Program Files (x86)\Windows Kits\10\Lib\SDK版本\ucrt\x64”,也可以是x64、x86、arm、arm64,根据需要进行选择。如果没有对应的SDK版本文件夹,那么回到1.2节采用isual Studio Installer安装Windows 10 SDK。
修改完成之后,重新启动编译窗口,再次编译。如果仍然出现错误,可继续查看出现接下来章节所述错误。
2.5 LINK : fatal error LNK1158: 无法运行“rc.exe”
LINK : fatal error LNK1158: 无法运行“rc.exe”
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x64\\link.exe' failed with exit code 1158
出现该错误,表示编译环境没有找到“rc.exe”。 对于出现xxx.exe无法找到的情况,我们需要更新Path环境变量,增加xxx.exe所在文件夹路径。我们用1.1节中Everything工具搜索rc.exe,发现其存在于文件夹“C:\Program Files (x86)\Windows Kits\10\bin\SDK版本\x64”,也可以是x64、x86、arm、arm64,根据需要进行选择。如果没有对应的SDK版本文件夹,那么回到1.2节采用isual Studio Installer安装Windows 10 SDK。
修改完成之后,重新启动编译窗口,再次编译。如果仍然出现错误,可继续查看出现接下来章节所述错误。
3 注意事项
修改环境后重新编译时,切记要重启编译窗口,例如cmd或C++编译窗口。否则,编译会一直提示修改之前的错误。
环境变量多个值之间,用英文分号“;”隔开。
相关文章
- Windows 签名伪造工具的使用,Python,签名
- 21行python代码实现拼写检查器
- windows系统下Python环境的搭建
- 【华为OD机试真题 python】服务中心选址【2023 Q1 | 100分】
- Python:os.path.join()产生的斜杠在Windows和Linux下的不同表现和解决方法
- python删除列表元素remove,pop,del
- 小白最想了解的最全Python就业方向
- Python爬虫高手必备的8大技巧!
- windows python web route 路由
- 什么有那么多人选择Python,真的有那么好吗?
- Python: match case
- gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- Python爬虫技术--基础篇--常用第三方模块virtualenv
- windows下的安装及使用 python
- python windows时间同步工具
- Windows系统中安装Python模块pip numpy matplotlib
- 基于Python+SQL Server2008实现(WinForm)快递管理系统【100010068】
- Windows下用python编写简单GUI程序的方法
- Python机器学习零基础理解K近邻算法
- 在Python中多种SQL数据仓库进行交互操作的方法详解
- 利用python进行TEQC质量检核结果绘图
- python多进程并发
- 【Leetcode】101:对称二叉树(Python)
- 解决kolla ansible docker api client python TypeError: load_config() got an unexpected keyword argument
- Python系列之Windows环境安装配置
- 计算机网络课程实验1——WINDOWS 环境下实现 WEB 服务器(python)