シトンの学習を開始します。単純な.pyxファイルをコンパイルしようとしていました。
print("hello")
ここに私のsetup.pyがあります:
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize("hello.pyx")
)
次に、コマンドを実行します。
python setup.py build_ext --inplace
以下のエラー。私はそれをグーグルで苦労してきたが、何も役に立たなかった。
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
誰かがエラーを解決するのを手伝ってくれますか?
Anaconda3 4.1.1、Python 3.5、およびVisual Studio Express 2015がインストールされています。
本当にイライラする...
誰かがこのスレッドを見つけ、VSおよび/またはAnacondaを再インストールするよりも迅速な解決策を探している場合-環境変数を定義することでこの同じエラーを回避することができましたINCLUDE io.h-VSコンパイラーがヘッダーを見つけられるようにします。
私のセットアップでは、VS2015を使用して、ユニバーサルCRTを使用するように変更すると、io.hの場所がC:\Program Files (x86)\Windows Kits\10\Include\<version>\ucrt
になります。異なるバージョン/環境では、io.hの場所が異なる場合があります。
visual studio build tools をダウンロードしてインストールします
マイクロソフトは、コンソールの開発手順を明確にするための努力をしません。 Visual Studioには、環境変数を確立するためのバッチファイルが長い間パッケージ化されています。 VS2015/2017でC++ CLI開発オプションを選択すると、これらのバッチファイルを実行するために、スタートメニューに1つ以上のショートカットが追加されます。
VS 2017の場合、さまざまなバッチファイルはすべて呼び出します:
C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\vcvarsall.bat
特定のパラメーター。
システムまたはユーザー環境変数を設定するよりも、特定のバッチファイルを呼び出して、ビルドのニーズを満たすことをお勧めします。
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat
または
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat
Python/Ruby/etcで留意すべきことの1つは、パッケージをインストールするために、スクリプトが実行シェルを管理者ロールに昇格させる必要がある場合が多いことです。管理者以外のシェルでバッチファイルを実行し、パッケージのインストールに昇格が必要な場合、環境変数を持たないサブシェルが生成されます。したがって、パッケージマネージャーまたはスクリプトを呼び出す前に、管理者シェルでバッチファイルを実行する必要があります。
私は同じ問題に出くわしました-あなたの設定と非常に似ています(唯一の違い:VS 2015 Pro)。他の人からホイールをダウンロードするだけで数週間後(例 http://www.lfd.uci.edu/~gohlke/pythonlibs/ )私は最終的に自分に合った解決策を見つけました。
2つの問題があります。問題1-「開発者コマンドプロンプト」を使用する必要があります-時々、[スタート]メニューにそのようなプログラムがあり、それを使用するだけです。
(ところで、その他:Python 3.5にはVS2015が必要です。他のバージョンは不要です。コミュニティエディションは問題ありません)
そうでない場合は、コマンドラインで次のスニペットを使用できます。
"%VS140COMNTOOLS%vsvars32.bat"
あるいは:
where cl >nul 2>nul || "%VS140COMNTOOLS%vsvars32.bat"
(私はビルド環境を実行するためにバッチファイルにそれを持っています)
(%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
(編集した回答のように)
だから今実行:
set INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
OK、エラーが表示されます:
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
今何?ライブラリのディレクトリを追加する必要があります。
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
今回はエラーなし:
> 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
(...)
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
私も同じ問題を抱えていたので、Windows 10 SDKをインストールして解決しました。
環境パスにWindows 10 SDKを追加します。
C:\ Program Files(x86)\ Windows Kits\10\Include \\ ucrt
エラーを削除する必要があります。
pyshark
をインストールしようとすると同じエラーが表示され、pip install pyshark
でDeveloper Command Prompty for VS 2017
を実行し、VC++ツールがインストールされていることを確認して、この問題を解決しました。
これは、CythonがWindows SDKによって提供されるライブラリを必要とするためです。これを修正するには、次を実行します。
python setup.py build_ext --inplace
これで問題が解決することを願っています。
Git Bash
にインストールしようとしているときにこのエラーが発生した場合(Visual Studio
コンパイラーを使用してBash
で実行されているWindows
Shellでも動作すると思います)次のことができます。
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>
Windows
とVisual Studio
の異なるバージョンでは、これらのパスはわずかに異なる場合があります。それらを取得する最善の方法は、エラーがスローされたときに、ファイルを検索することです
find /c/Program\ Files\ \(x86\)/ -name <name_of_error_causing_file>
次のようにinclude dirsとlibrary dirsを追加することで解決できます。
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
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
そして、問題が発生している場合:rc.exeでリンクエラーが発生する可能性があります。また、rc.exeとrc.dll(x64)を実行中のlink.exe
と同じディレクトリにコピーする必要があります。