40

Windows 7 システムに Cython for Python 2.7 をインストールしようとしています。特に、私はすべて 64 ビットを好みます。(ご参考までに言うと、Cython は特殊な数値解析用の別のパッケージに必要なコンポーネントの 1 つであるため、Cython が必要です。また、x64 は大規模なデータ セットの保存に有利になる可能性があります。)

そこで、公式サイトから x64 Python 2.7 をダウンロードしました。Christoph Gohlkeから Cython を入手しました。もちろん、Python 2.7 の amd64 バージョンです。インストールする前に、 Joe DF の回答 here.regにあるファイルを使用して Python 2.7 をレジストリに追加しました。その後、Visual C++ コンパイラをhere (動作するとは思わない) とhere (ただし、動作するはずです) からインストールしました。この時点で、私のディレクトリには、、、、のすべてがあります。実行しましたが、エラーメッセージはありませんでした。C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\binvcvars32.batvcvars64.batvcvars86_amd64.batvcvarsx86_ia64.batvcvars64.bat

続いて、このページに従って「hello world」テスト ファイルを作成しました。

次に、このエラーが発生しました。

...\Tests>python setup.py build_ext --inplace
running build_ext
building 'hello' extension
error: Unable to find vcvarsall.bat

だから私は自分自身に考えました:まあ、Cythonはそのファイルが存在しないので見つけることができません. (ハードドライブ全体を検索しました。) そこでvcvars64.bat、 からをコピーし...\VC\bin\VC、名前を に変更しましたvcvarsall.bat。これで vcvarsall エラーはなくなりました。そして・・・当然、新たなエラーが発生。

...\Tests>python setup.py build_ext --inplace
running build_ext
building 'hello' extension
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\amd64\cl.exe /c /nolog
o /Ox /MD /W3 /GS- /DNDEBUG -IC:\Python27\include -IC:\Python27\PC /Tchello.c /F
obuild\temp.win-amd64-2.7\Release\hello.obj
hello.c
C:\Python27\include\pyconfig.h(227) : fatal error C1083: Cannot open include fil
e: 'basetsd.h': No such file or directory
error: command '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\amd64
\cl.exe"' failed with exit status 2

今、私はどのように進むべきか分かりません。私は何をすべきか?あなたの助けに感謝します。

(わかりやすくするために、コンパイラをMingw32に設定してみました。しかし、他にもエラーがあります。今のところ、VCを機能させることに焦点を当てています。)


編集:このページの指示に従って、SDK ビルド環境 CMD を使用してみました。同じエラーを受け取りました。

4

6 に答える 6

21

Windows 10 の場合は、ここからSDK をダウンロードして、ヘッダー ファイルを修正しますbasestd.h

.exe をダウンロードしてインストールし、うまくいきました。SDK は ~2.3GB でした。

注:追加のエラーが発生した 64 ビット システムを使用している私のようなユーザーの場合:

`LINK : fatal error LNK1158: cannot run 'rc.exe'
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1158

システムの正しいフォルダーにファイルを配置することで問題を解決する優れた回答がここにあります。rc.exe

于 2017-07-02T05:11:53.980 に答える
1

提案として、setup.py を使用して cython 64 ビットをビルドするために試すことができます。

Python ディストリビューションに Anaconda、Microsoft の Windopws SDK 7、および MSVC 12.0 を使用しています。

まず、cuda 関数のライブラリを作成します。次に、一時フォルダーを作成するために python setup.py build_ext -i を実行し (エラーが発生します)、以下の Makefile をコンパイルします。

ほとんどの場合、32ビットアプリをコンパイルするときにsetup.pyからこれを取得し、64ビットをコンパイルするように変更します。

Makefile

CL_EXE      = "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\cl.exe"
LINK_EXE    = "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\link.exe"

CL_FLAGS    = /c /nologo /Ox /MD /W3 /GS- /DNDEBUG /O2 /fp:fast
CL_INC      = -I. -I"C:\Program Files\Microsoft SDKs\Windows\v7.1\Include" \
            -I"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include" -IC:\Users\name\Anaconda2\envs\py27\Lib\site-packages\numpy\core\include -IC:\Users\name\Anaconda2\envs\py27\include -IC:\Users\name\Anaconda2\envs\py27\PC 

LINK_FLAGS      = /DLL /nologo /INCREMENTAL:NO /MACHINE:X64
LINK_LIBPATH    = "/LIBPATH:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64" \
                    /LIBPATH:C:\Users\name\Anaconda2\envs\py27\libs \
                    /LIBPATH:C:\Users\name\Anaconda2\envs\py27\PCbuild\amd64 \
                    /LIBPATH:C:\Users\name\Anaconda2\envs\py27\PC\VS9.0\amd64 \
                    "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\amd64" \
                    "/LIBPATH:C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64"
LINK_LIB        = cuda_multiply4D.lib cudart.lib MSVCRT.lib kernel32.lib
LINK_EXPORT     = /EXPORT:initmy_cuda
LINK_OBJ        = build\temp.win-amd64-2.7\Release\my_cuda.obj
LINK_OUT        = "/OUT:E:\my_cuda.pyd"
LINK_OTHER_CONF = /IMPLIB:build\temp.win-amd64-2.7\Release\my_cuda.lib /MANIFESTFILE:build\temp.win-amd64-2.7\Release\my_cuda.pyd.manifest 

all:
    $(CL_EXE) $(CL_FLAGS) $(CL_INC) /Tcmy_cuda.c /Fobuild\temp.win-amd64-2.7\Release\my_cuda.obj
    $(LINK_EXE) $(LINK_FLAGS) $(LINK_LIBPATH) $(LINK_LIB) $(LINK_EXPORT) $(LINK_OBJ) $(LINK_OUT) $(LINK_OTHER_CONF)

ノート:

  • MSVCRT.lib kernel32.lib はオプションです。
  • /EXPORT:initmy_cuda は必須です。その形式 init%yourfilename_WO_Ext%
  • "/OUT:E:\my_cuda.pyd" を使用して、出力場所、ファイル名、および拡張子を決定します。
于 2016-10-26T08:49:50.963 に答える