Python64 + win10_64 + cython + msys2(ming64)ピットを覚えステップ

私のpythonとlinuxの下にされている、昨日までは、窓の下でコンパイルされたモジュールcython思ったことはありません、適切に適切にされている......

このプロセスは時間が第1の直接ポータルに、長い話を短く、不足して、解決策は単純で、曲がりくねったです。

https://www.jianshu.com/p/50105307dea5

msys2私が使用し、そのプロセスは少し紆余曲折あり、下側のノートので、ここであなたができるの手順は、以下のとおりです。

それはツールチェーンの3セットの合計が含まれている内部で、窓の下のLinuxシステムでmsys2、

GCC例を取り付け、直接このパッケージはmingwの-W64-i686の-GCCまたはMinGWの-W64-x86_64の-GCCを装着することができるGCCを実装してもよいです

それが発生するがコンパイルされたソフトウェアは、は/ usr / libの下に接続する場合、GCCは、msys2ツールチェーンシステム自体に属し、これらの3種類のパッケージはexeファイルですが、msys2を離れて実行されていません

そして、mingwの-W64-i686の-gccとmingwの-W64-x86_64の-gccのツールは、実際にクロスチェーン、ホストシステムにのみ依存コンパイラ・ライブラリのexeファイルで、それが直接、Windowsオペレーティングシステムの下ですることができ

でもにMinGW64限り、それがシステムに追加/ binディレクトリシステム変数の下でmsys2として、それは簡単に呼び出すことができます。

を用いたmsys2パイソン:

Pythonは、インストールの3種類を有していてもよく、

1、完全に重要ではありません、あなたがあなた自身のパッケージをコンパイルし、システム環境変数を介して直接、適切なMINGW32かにMinGW64コンパイラを呼び出すことができますmsys2で、最も一般的に行われている公式のPythonのインストールからインストールパッケージをダウンロードしてください

GCCのmsys2と、msys2 Pythonで直接設置2、直接Linuxインストール同様のGCCパイソン、最も便利で、類似のLinuxの経験をコンパイルするために接続されたパスを指定する必要がないように、欠点がコンパイルされ

エグゼファイルは離れmsys2から実行することはできません

図3は、インストールパッケージのMinGW-W64-x86_64の-GCC MinGWの-W64-x86_64の-パイソンこのツールチェーンは、これは、1と実際に同様でもmsys2に直接使用することができるシステムで直接EXE実行をコンパイルすることができます。

私のシステムはでpyhon3でこれを使用することができ、直接mingwの-W64-x86_64の-gccのコンパイラをインストールのpython3 64ビット版、およびインストールされているパッケージの数が多いので、バーレーンのmsys2後に、インストールされているので。

パックマン-S mingwの-W64-x86_64版-gccの

Linuxの\(はい、私はLinuxのカザフスタンを装っ)、システム環境変数に加えてE:Linuxの\にMinGW64の\ビン\それから私はEに設置msys2などのシステム環境変数に追加さにMinGW64。

pythonインストールディレクトリ:ポータルチュートリアルによるC:\Program Files\Python\Lib\distutilsで新しいdistutils.cfgファイル、次のように:

[build]
compiler=mingw32

[build_ext]
compiler=mingw32

右MINGW32を書き、それがにMinGW64にMinGW64の書き込みではないので、この場所は右であることに注意してください。

このとき、cythonプログラムをコンパイルし、そのような変化をカリキュラムによると、VCのバージョン19001906などが報告されます。

第三に、修正cygwinccompiler.pyファイルを

Pythonのインストールディレクトリを入力しC:\Program Files\Python\Lib\distutils、変更しcygwinccompiler.pyたファイルを、次のように追加get_msvcr()機能を(解決しますValueError: Unknown MS Compiler version 1900错误)。

elif msc_ver == '1900':
    # Visual Studio 2015 / Visual C++ 14.0
    # "msvcr140.dll no longer exists"
    return ['vcruntime140'] 

私はそれが1906で報告されたので、我々は変化しているので

elifのmsc_verは== '1906': のVisual Studio 2015やVisual C / C ++ 14.0 
    # "msvcr140.dllは存在しません" 
    [ 'vcruntime140']を返します

このステップでは、実際のバージョンに応じて変更する必要があります。

Python36.dllファイルを変換
Cを解決するために:\プログラムファイル\ Pythonの\ libsに /libpython36.a:エラーがシンボルを追加:ファイル形式ではないエラーを認識します。

\プログラムファイル\のPythonの\:Cコピー python36.dll デスクトップには、次のコマンドを実行します。

gendef python36.dll 
DLLTOOL。-D python36.dll -d python36 DEF - L libpython36.aの


バックアップC:\プログラムファイル\ Pythonの\ LIBSのを / ファイルlibpython36.a、Cにステップlibpython36.a生成したコピー:\プログラム\ libsディレクトリの下のPython \をファイル。

ファイルを変換Vcruntime140.dll 
\プログラムファイル\のPython:C解決するために / vcruntime140.dllを:ファイルません認識:ファイル形式はありません、エラーを認識しました。

Cをコピー:\プログラムファイル\ Pythonの\の vcruntime140.dllをデスクトップに、次のコマンドを実行します。
 
gendef vcruntime140.dllを
DLLTOOLを。Vcruntime140.dll -D -d vcruntime140 DEF - L libvcruntime140.a

 2 Cの結果libvcruntime140.aコピーします。\ PROGRAMFILES \ Pythonの\のlibsディレクトリを。

これは、いくつかの手順問題ありません、私はpython3.7.xだったので、python37.dllにpython36.dllの上、当然のことながら、私はDドライブにインストールパイソン、その対応するCです:\プログラムファイル\ xxxxxは、我々はDを変更したいです:

さらに、gendef mingwの-W64-x86_64の-ツール-gitのインストールが必要

パックマン-S mingwの-W64-x86_64版 - ツール -  gitの

そうでなければ、そのような順序。

私はこのcythonは、いくつかのコンパイルエラーもコンパイル時に加えて、オンライン検索、プラス-DMS_WIN64オプションを通じて、すべての問題を解決

        self.set_executables(コンパイラ= ' GCC -O -Wall -DMS_WIN64 ' 
                             compiler_so = ' GCC -mdll -O -Wall -DMS_WIN64 ' 
                             compiler_cxx = ' G ++ -O -Wall ' 
                             linker_exe = ' GCC ' 
                             linker_so = ' % S%S%S "(self.linker_dll、shared_option、
                                           entry_point)) 
        多分、我々はまた、-mthreadsを追加する必要がありますが、その後、完成
        #1 (MINGW32のドキュメントを参照してくださいmingwm10.dll)DLLが別のDLLを必要とする
        :( `MINGW32'に取り扱うサポートスレッドセーフ例外-mthreads) 

        不要のライブラリを追加

 

上記で

gccの- V 
使用して構築 - スペック。
COLLECT_GCC = E:Linuxの\にMinGW64の\ビン\ gcc.exe \ 
COLLECT_LTO_WRAPPER / linuxの/にMinGW64 / binに/../ x86_64の-W64-MINGW32 / 9.2.0 / LTO-/ gccを/ libに:= E Wrapper.exeではの
ターゲット:x86_64版 -w64- MINGW32 
で構成../gcc-9.2.0/configure --prefix = /にMinGW64 --withローカルプレフィックス= /にMinGW64 /ローカル--build = x86_64の-W64-MINGW32 --host = x86_64の-W64-MINGW32 --target = x86_64- W64-MINGW32 --withネイティブ・システム・ヘッダDIR = /にMinGW64 / x86_64の-W64-MINGW32 /含む--libexecdir = /にMinGW64 / LIB --enable-ブートストラップ--withアーチ= x86-64で--with -tune =ジェネリック--enable-言語= cで、LTO、C ++、FORTRAN、ADA、にObjC、OBJ-C ++ --enable共有--enable静的--enable-libatomic --enable-スレッド= POSIX --enable黒鉛--enable-完全動的列--enable-libstdcxx-ファイルシステム-TS =はい--enable-libstdcxx-時間=はい--disable-libstdcxx-PCH --disable-libstdcxx-デバッグ--disable-ISL-バージョンチェック--enable-LTO --enable-libgomp --disable-multilibの--enable -checking =リリース--disable-RPATH --disable-win32の-レジストリ--disable-NLS --disable-werror --disable-symvers --enable-プラグイン--with-libiconvを--with-システムのzlib  - -GMP = /にMinGW64 --with-MPFR = /にMinGW64 --with-MPC = /にMinGW64 --with-ISL = /にMinGW64 --with-pkgversion =' MSYS2プロジェクトによって建てられRev1の、' //sourceforge.net/projects/msys2 --with-gnuの-として--with-gnu-:--with-bugurl = httpsのLDの
スレッドモデル:POSIXの
gccのバージョン 9.2.0(Rev1の、MSYS2プロジェクトによって建て)

以下によるPythonの3.7.3 / 3.7.4環境

 

おすすめ

転載: www.cnblogs.com/yafengabc/p/11399939.html