刚开始学习cython.我试图编译一个简单的.pyx文件.
print("hello")
Run Code Online (Sandbox Code Playgroud)
这是我的setup.py:
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize("hello.pyx")
)
Run Code Online (Sandbox Code Playgroud)
然后我运行命令.
python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)
错误如下.我一直在谷歌搜索它,没有任何帮助来找我.
running build_ext
building 'hello' extension
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD
-IC:\Users\Jackie\AppData\Local\Continuum\Anaconda3\include -IC:\Users\Jackie\AppData\Local\Continuum\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE"
"-IC:\Program Files (x86)\Windows Kits\10\include\wdf\ucrt"
"-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6\include\um"
"-IC:\Program Files (x86)\Windows Kits\8.1\include\shared"
"-IC:\Program Files (x86)\Windows Kits\8.1\include\um" "-IC:\Program
Files (x86)\Windows Kits\8.1\include\winrt" /Tchello.c
/Fobuild\temp.win32-3.5\Release\hello.obj
hello.c
c:\users\jackie\appdata\local\continuum\anaconda3\include\pyconfig.h(68):
fatal error C1083: Cannot open include file: 'io.h': No such file or
directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\cl.exe' failed with exit status 2
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个错误吗?
我安装了Anaconda3 4.1.1,Python 3.5和Visual Studio Express 2015.
真的很令人沮丧......
Cal*_*son 25
如果有人发现这个线程,并且正在寻找比重新安装VS和/或Anaconda更快的解决方案 - 我通过定义指向io.h的位置的环境变量INCLUDE能够通过同样的错误- 允许VS编译器找到标题.
在我的设置中,使用VS2015,使用Universal CRT的改变意味着io.h的位置C:\Program Files (x86)\Windows Kits\10\Include\<version>\ucrt.对于不同的版本/环境,io.h的位置可能不同.
小智 21
下载visual studio构建工具并安装
小智 11
微软不再努力使控制台开发步骤显而易见.Visual Studio早已与一些批处理文件打包在一起以建立环境变量.在VS2015/2017中选择C++ CLI开发选项时,会在开始菜单中添加一个或多个快捷方式来执行这些批处理文件.
对于VS 2017,各种批处理文件都调用:
C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\vcvarsall.bat
Run Code Online (Sandbox Code Playgroud)
具有特定参数.
而不是设置系统或用户环境变量,最好调用特定的批处理文件以满足您的构建需求.
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat
Run Code Online (Sandbox Code Playgroud)
要么
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat
Run Code Online (Sandbox Code Playgroud)
有一点要记住Python/Ruby/etc,脚本通常需要将执行shell提升为管理员角色才能安装包.如果在非管理员shell中执行批处理文件,并且程序包安装需要提升,则会生成一个不具有环境变量的子shell.因此,您应该在调用包管理器或脚本之前在管理员shell中运行批处理文件.
我偶然发现了同样的问题 - 与你的配置非常相似(唯一不同的是:VS 2015 Pro).几个星期后,只需要从其他人那里下载轮子(例如http://www.lfd.uci.edu/~gohlke/pythonlibs/),我终于找到了适合我的解决方案.
有两个问题.问题1 - 您需要使用"开发人员命令提示符" - 有时在"开始"菜单中有这样的程序,然后您只需使用它.
(BTW,对于其他人:Python 3.5需要VS2015,而不是任何其他版本.社区版可以)
如果没有,您可以使用以下代码段(在命令行中):
"%VS140COMNTOOLS%vsvars32.bat"
Run Code Online (Sandbox Code Playgroud)
甚至:
where cl >nul 2>nul || "%VS140COMNTOOLS%vsvars32.bat"
Run Code Online (Sandbox Code Playgroud)
(我在批处理文件中运行我的构建环境)
(如果你没有%VS140COMNTOOLS%变量,那么也许你刚刚安装了VS,你需要重新启动,以便新的环境变量可见).
现在您将收到错误:
c:\program files\anaconda3\include\pyconfig.h(68): fatal error C1083: Cannot open include file: 'io.h': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\cl.exe' failed with exit status 2
Run Code Online (Sandbox Code Playgroud)
(如您编辑的答案)
所以现在运行:
set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
Run Code Online (Sandbox Code Playgroud)
好的,现在你会得到错误:
LINK : fatal error LNK1104: cannot open file 'ucrt.lib'
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1104
Run Code Online (Sandbox Code Playgroud)
现在怎么办?您需要添加库目录:
set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64
Run Code Online (Sandbox Code Playgroud)
这次没有错误:
> dir
05/16/2017 11:33 AM 69,240 hello.c
05/16/2017 11:47 AM 15,872 hello.cp35-win_amd64.pyd
05/16/2017 11:32 AM 17 hello.pyx
(...)
Run Code Online (Sandbox Code Playgroud)
TL; DR - 整个事情:
where cl >nul 2>nul || "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" amd64
set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
set LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64
python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)
小智 6
可以通过添加包含目录和库目录来解决,如下所示:
set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt;E:\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared;E:\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\onecore\x64;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64;C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64
Run Code Online (Sandbox Code Playgroud)
set LIB=E:\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\onecore\x64;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\amd64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64
Run Code Online (Sandbox Code Playgroud)
如果那时您现在遇到问题:链接错误可以使用 rc.exe 运行;您还需要将 rc.exe 和 rc.dll (x64) 复制到与运行相同的目录link.exe
这是因为 Cython 需要 Windows SDK 提供的库。要解决此问题,请执行以下操作:


python setup.py build_ext --inplace希望这能解决您的问题。
如果有人在尝试安装时遇到此错误Git Bash(我想这也适用于使用编译器Bash运行的任何 shell ),那么您可以执行以下操作:WindowsVisual Studio
INCLUDE="C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/ucrt/;C:/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0/shared/" \
> LIB="C:/Program Files (x86)/Windows Kits/10/Lib/10.0.17763.0/ucrt/x64;C:/Program Files (x86)/Windows Kits/10/Lib/10.0.17763.0/um/x64" \
> PATH=$PATH:/c/Program\ Files\ \(x86\)/Windows\ Kits/10/bin/10.0.17763.0/x64 \
> python -m pip install <package>
Run Code Online (Sandbox Code Playgroud)
对于不同版本的Windows和Visual Studio这些路径可能略有不同。获取它们的最佳方法是当抛出错误时,使用以下命令搜索文件
find /c/Program\ Files\ \(x86\)/ -name <name_of_error_causing_file>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45274 次 |
| 最近记录: |