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
  • 66 follow us in feedly

関連記事

Pythonで簡単に画像検出でLinux GUI操作自動化ライブラリを作ったよ

[2015/02/07 追記] [bm url="http://fx-kirin.com/python

記事を読む

Python での ポートフォリオの計算

Python でのポートフォリオの計算 ポートフォリオの計算について色々調べてみた。とりあえず使いたいって人はpo

記事を読む

no image

vim-ipythonをWindows 7 x64で使うとR6034 が出る件

個人的なただの忘備録。 Visual Studioのコマンドプロンプトから実行すること。 http://st

記事を読む

no image

stop automatically closeing vim-ipython output with jedi-vim

Even though I commented out the following code in vim_ipytho

記事を読む

重回帰分析による米雇用統計の予測モデルを作成してみる

この記事はPython その2 Advent Calendar 2015 の17日目の記事です。 1 はじめに

記事を読む

DictCursor に AttrDict を指定する

記事を読む

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

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

記事を読む

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

pdbでのデバッグにはreload機能がない IPythonには優秀なautorelaod機能がマジックコマンドで

記事を読む

VimでPythonのIDE 環境を一から構築する

追記 これ見ておいたほうがいいかも。 Vimを最強のPython開発環境にする2 - Λlisue's blog

記事を読む

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

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

記事を読む

Message

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

Adsense

Avoiding the problem of connect to outside of LAN with L2TP/IPSec on Ubuntu 18.04.

とても困って、原因の特定に2日かかった。疲れた。確定申告したいのに。 The IPSEC tu

Wine 上の MT4から ZeroMQ を使って Linux の pyzmq の通信をさせる

こんにちは。キリンです。 最近、年に数度のMQLを書くときがきたのですが、Pythonに慣れま

numpy の2つ行列で片方にあるものだけを抽出する。

numpy で2つの時間のインデックスをarrayデータとして持っていて、x にはない時間のイン

Synology DS216j の MySQL に外部からつなぐ

Synology DS216j をNAS(RAID1 12TB)として使っています。もっぱらデー

VMWare Player をヘッドレスモードで使う。

[bm url="http://www.ryanchapin.com/fv-b-4-713/Ru

→もっと見る

PAGE TOP ↑