web-dev-qa-db-ja.com

Cython-インクルードファイルを開けません: 'io.h':そのようなファイルまたはディレクトリはありません

シトンの学習を開始します。単純な.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がインストールされています。

本当にイライラする...

27
user2869934

誰かがこのスレッドを見つけ、VSおよび/またはAnacondaを再インストールするよりも迅速な解決策を探している場合-環境変数を定義することでこの同じエラーを回避することができましたINCLUDE io.h-VSコンパイラーがヘッダーを見つけられるようにします。

私のセットアップでは、VS2015を使用して、ユニバーサルCRTを使用するように変更すると、io.hの場所がC:\Program Files (x86)\Windows Kits\10\Include\<version>\ucrtになります。異なるバージョン/環境では、io.hの場所が異なる場合があります。

25
Calum Atkinson

visual studio build tools をダウンロードしてインストールします

  1. Visual C++ビルドツールのコア機能。
  2. VC++ 2017 v141ツールセット(x86、x64)
  3. Visual C++ 2017再頒布可能アップデート
  4. デスクトップC++用のWindows 10 SDK(10.0.16299.0)

enter image description here

20
bob

マイクロソフトは、コンソールの開発手順を明確にするための努力をしません。 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つは、パッケージをインストールするために、スクリプトが実行シェルを管理者ロールに昇格させる必要がある場合が多いことです。管理者以外のシェルでバッチファイルを実行し、パッケージのインストールに昇格が必要な場合、環境変数を持たないサブシェルが生成されます。したがって、パッケージマネージャーまたはスクリプトを呼び出す前に、管理者シェルでバッチファイルを実行する必要があります。

10
Justin Kirk

私は同じ問題に出くわしました-あなたの設定と非常に似ています(唯一の違い: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
9
Tomasz Gandor

私も同じ問題を抱えていたので、Windows 10 SDKをインストールして解決しました。

3
Amr Ashraf

環境パスにWindows 10 SDKを追加します。

C:\ Program Files(x86)\ Windows Kits\10\Include \\ ucrt

  1. 変更を適用します。
  2. 管理者権限で新しいコマンドプロンプトを開きます。

エラーを削除する必要があります。

1
Khan

pysharkをインストールしようとすると同じエラーが表示され、pip install pysharkDeveloper Command Prompty for VS 2017を実行し、VC++ツールがインストールされていることを確認して、この問題を解決しました。

1
Kcvin

これは、CythonがWindows SDKによって提供されるライブラリを必要とするためです。これを修正するには、次を実行します。

  1. Visual Studio 2019のビルドツールをインストールします。 here からダウンロードします。 Build Tools for Visual Studio 2019 download page
  2. VS Build Toolsセットアップファイル(vs_buildtools.exe)を実行します。次を選択します。
    • MSVCビルドツール(MSVC v142-VS 2019 C++ x64/x86ビルドツール)
    • Windows 10 SDK Build Tools for Visual Studio 2019 installation
  3. VS Build Toolsをインストールすると、約3 GBのスペースが必要になります。
  4. [スタート]メニューから、VS 2019の開発者コマンドプロンプトを実行します。 Developer Command Prompt for VS 2019
  5. Cython開発ディレクトリに移動して、次を実行します:python setup.py build_ext --inplace

これで問題が解決することを願っています。

1
Rivalus

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>

WindowsVisual Studioの異なるバージョンでは、これらのパスはわずかに異なる場合があります。それらを取得する最善の方法は、エラーがスローされたときに、ファイルを検索することです

find /c/Program\ Files\ \(x86\)/ -name <name_of_error_causing_file>
1
rwolst

次のように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と同じディレクトリにコピーする必要があります。

0
大白杨