web-dev-qa-db-ja.com

pyodbcおよびpython 3.4 on Windows

pyodbcは非常に素晴らしいものですが、Windowsインストーラーは非常に特定のpythonバージョンでのみ機能します。Python 3.4のリリースでは、使用可能なインストーラーだけがレジストリに3.3が表示されなくなったら停止します(3.4は確かにそこにあります)。

3.3のインストールから.pydおよび.Egg-infoファイルを3.4のsite-packagesディレクトリにコピーしても、うまくいくようには見えません。 pyodbcをインポートすると、ImportErrorがスローされます:ImportError: DLL load failed: %1 is not a valid Win32 application.

3.3ファイルを正しく機能させるために追加できる秘密のソースはありますか?または、3.4インストーラーバージョンを待つ必要があるだけですか?

19
steegness

Pythonの異なるバージョンは(ほとんどの場合)バイナリ互換ではないため、コンパイルされた拡張機能(pyodbcなど)は特定のバージョンでのみ機能します。

純粋なPythonパッケージ(完全にPythonで作成され、Python以外の依存関係がないパッケージ)はコンパイルする必要がないため、複数のPythonバージョンをサポートするように作成できることに注意してください。

また、コンパイルされた拡張機能がPython 3.2と3.3、3.4、3.4で機能するように作成することは技術的に可能であることにも注意してください。そして将来の3.xも登場しますが、 PEP 384 で指定されている "stable ABI" に限定する必要があり、ほとんどの拡張機能はこれを行いません。私の知る限り、pyodbcは安定したABIに限定されておらず、Pythonバージョンごとに個別にコンパイルする必要があります。

とは言っても、必要なツールと専門知識があれば、独自のバージョンのpyodbcをソースからコンパイルすることもできます。 (しかし、あなたがこの質問をしているのなら、そうではないでしょう。私もしません。そうでなければ、この回答にいくつかのヒントを含めます。)

あなたがすでにコメントしたように、それは純粋なPythonパッケージなので、 pypyodbc が最善の策かもしれません。

Pypyodbcのインストールはコマンドラインから実行できます:

C:\Python34\Scripts>pip install pypyodbc

Pyodbcのドロップイン置換としてそれを使用すると、次のように実行できます。

import pypyodbc as pyodbc

[この編集時のpyodbcの現在のバージョンは .0.1 であり、Python 3.4をサポートしています。もちろん、将来のバージョンのPythonがリリースされたときにpypyodbcが再び遅れる場合に備えて、pyodbcを認識することは依然として役に立ちます。]

23
John Y

here からダウンロードしようとしましたか? 3.4用の非公式ビルドがあります。自分で簡単なテストを行いましたが、問題なく動作しているようです。

9
xbb

pyodbc 3.0.10をインストールして修正しました。 pyodbcの最新バージョンは、WindowsでPython 3.4で動作しませんでした

しかしpyodbc 3.0.10は私のために働きました

コマンドプロンプトにコマンドをインストール:pip install pyodbc 3.0.10

0
coder