Wizard In The Market
システムトレードの魔術師

*

Python x64 & MinGW64 環境の構築

公開日: : 最終更新日:2017/03/14 Python , , ,

2016-06-10 11.08.02

流石に詰まりまくったのでまとめることにする。

MSYS2 をインストール

個人的にこれからメインで使いたいと思っているbash ツールのMSYS2。ConEmuと使うと、とっても幸せな気分になれます。

x64版をインストール。

msys2を起動し、pacmanで必要なものをインストール。

以下にPathを通す。

libpython27.a の作成

どうやら、標準のlibpython27.aではうまくコンパイルしてくれないらしい。

先ほどインストールしたmsys2上から、DLLのライブラリの作成を行う。

C:\Windows\System32 にあるpython27.dll を作業用ディレクトリに保存。

bash から 作業用ディレクトリに移動し、以下のコマンドを実行

libmsvcr90.aの作成

標準のままだと、ちゃんとmsvcr90.dllにリンクをうまく張ってくれないので、libmsvcr90.aも自作します。

python27.dllをDependency Walkerを使って分析します。

使用しているmsvcr90.dllのFull Pathを取得。そのディレクトリから、msvcr90.dllを作業ディレクトリに持ってきます。

同様に以下のコマンドを実行。

msvcr90.def ファイルができるので、テキストエディタで開きます。

上3行を見つけてコメントアウト。

libmsvcr90.aファイルを作成。

libpython27.aとlibmsvcr90.aをlibsフォルダに保存

インストールしたPythonのルートフォルダのibsフォルダに作成した2つのファイルを保存します。上書きされるのもあるので、念のためバックアップを取ったほうがいいです。

mingwpyのインストール

このままでは、GCCにmanifestファイルが渡されないため、きちんとmsvcr90.dllへのリンクが渡されません。そのため、invalid access to memory が頻繁に表示され、自前のC拡張ライブラリが使えないことがしばしばです。mingwpyを入れれば、適切にmanifestを適応したpydファイルにしてくれます。

※これ、本当に困りました。Dependency Walker で見ても、明らかにmsvcr90.dllへのリンクがちゃんとできてない。manifestの設定方法を調べていてもなかなか出ない等・・。mingwpyで全て解決。

遭遇するであろうエラーとその解決

これで作業が終わって欲しいところなんですが、標準のPythonのincludeファイルをいくつかいじらないと、ちゃんとコンパイルしてくれません。

undefined reference to __imp_Py_InitModule4'

Pythonのルートフォルダから、include\pyconfig.h を開きます。

141行目にあるこの3行を #ifdef _MSC_VER の上の107行目に移動させます。

multiple definition of atexit’

msvcr90.defファイルのコメントアウトをしっかりしていないと、このエラーが表示されます。

DLL load failed: メモリ ロケーションへのアクセスが無効です。

gccにちゃんとmanifestが渡されていないようです。mingwpyをインストールしてみてください。

以上で終わりです。お疲れ様でした!

参考

MSYS2

MSYS2で快適なターミナル生活 – Qiita
はてブ数
MSYS2で快適なターミナル生活Windowsでコマンドラインの環境を整えるには、MSYS2が優秀だ。デフォルトのターミナルはmintty、シェルはbash、パッケ...

Python x64 MinGW64の設定

にほんブログ村 為替ブログへ 
Fx-Kirin

About Fx-Kirin

2009年10月にFXを開始、翌年2010年5月から脱サラをしてFX業界に専念。 2012年10月頃から本格的に勝ち始め、一月で資産を倍にする、2年半月間負けなし等、安定した収支で2013年11月に生涯FX収支が1億を超える。 投資スタイルはシステムトレード。プログラミングの知識がほぼない状態から、独学で自分がしたいと思うことであればほぼ実現することが可能なレベルまで成長。好きな言語はRuby, Python。必要となればC++からVBA、Pascal等なんでも行う。MT4/MT5のプログラミングも得意。 2011年にはFXで稼いだ資金をもとにシンガポールに移住し、留学も兼ねて起業をチャレンジするほど、ビジネスを興すことに熱意がある。国内の業者を主に使い始めたことから、2012年に帰国。零細株式会社経営中。

Adsense

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 63 follow us in feedly

関連記事

Derivatives analytics with Python の学習ノート 1,2章

洋書を読んでいると、いつも読んだ気になってちゃんと理解出来てるか自信がないことが多いので、チャプターごとに要点をまとめ

記事を読む

PythonのThreadを待機させるか、必要の度に作成するのかのベンチマーク比較

QueueとThreadのベンチマーク比較 2つのケースについて比較検証してみました。 実際に処理する内

記事を読む

CPP extension vs Cython vs CPython on calculating the mean of numpy array

I'd like to get any feedback to make cython faster like

記事を読む

まだ Python の datetime で消耗しているの? maya 使おうぜ

この記事は Python Advent Calendar 2016 の 24日目の記事です。 当初は SCOOP

記事を読む

Rust で Python の拡張ライブラリ作成 と numpy との性能比較

この記事は Python Advent Calendar 5日目の記事です。遅れてすみません。 Rust で Py

記事を読む

Pythonで簡単自動化!PyAutoGuiが便利すぎて感動したのでご紹介

以前こんな記事を書いていたのですが、これがまったく不要になるとても便利なPython Libraryがあった

記事を読む

絶対ダメ! マルチスレッドでの共通変数のインクリメント演算

デバッグ中の発見 とあるマルチスレッドプログラムをPythonで書いていた際に遭遇した誤使用です。C/C++等

記事を読む

Interactive Brokers 証券の Python API を利用する

Interactive Brokers 証券とは 日本には珍しく自動売買プラットフォームが提供されいてる証券会社です。

記事を読む

no image

stop automatically closeing vim-ipython output with jedi-vim

Even though I commented out the following code in vim_ipytho

記事を読む

no image

JAVA の SHA1 Digestの作り方

>>> import base64 >>> import hashlib >>> base64.b64encode(

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

Windowsユーザ御用達の uci.edu から直接python wheelをインストールしてくれるライブラリ pipwin

あんまり情報が出てこないのでメモ書き。 https://twitter.com/fx_kiri

Python2 から Python3 へのC Extension の移行

最初に追加 モジュールの初期化と状態情報を書き換える initmyextension 関

Interactive Brokers 証券の Python API を利用する

Interactive Brokers 証券とは 日本には珍しく自動売買プラットフォームが提供され

Python Pandas からお手軽に highcharts が使える kanichart 作りました。

Kanichart fx-kirin/kanichart: Easy(簡易) plotting

Python 2, Python 3 で更新したファイルを調べてreloadするパッケージを作った。

pdbでのデバッグにはreload機能がない IPythonには優秀なautorelaod機能

→もっと見る

PAGE TOP ↑