2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

M1 Macでsnowflake-connector-pythonを動作する環境を作成する

Last updated at Posted at 2022-07-07

2022年7月6日での構築方法

M1チップ上ではsnowflake-connector-pythonを普通にインストールする場合には動かないケースがある。
結論として

  • venv(もしくはpipenv)でPython環境を作成する
  • pip install cffi==1.15.0でcffiのversionを落とす

以上をすることで、M1 Macで動作させる事ができる。

発生したエラー1

MemoryError: Cannot allocate write+execute memory for ffi.callback(). You might be running on a system that prevents this. For more information, see https://cffi.readthedocs.io/en/latest/using.html#callbacks

Conda環境下やbrewでインストールしたPython環境下でpip install snowflake-connector-pythonすると、上記のPyOpenSSLのエラーが発生します。
内容は以下のissueが該当します。
https://github.com/pyca/pyopenssl/issues/873
まだ解決されているわけではありませんが、venvを使った環境構築だとこのエラーが発生しないようです。

私は最初minicondaで構築していましたが、venvに変えると上記のエラーは発生しなくなりました。(謎)

python3 -m venv snowflake_envのあとにsource snowflake_env/bin/activateでさっと環境は作れます

発生したエラー2

venvで構築したら次のようなエラーに変わります。

ImportError: dlopen(/-----/-----/snowflake/lib/python3.8/site-packages/_cffi_backend.cpython-38-darwin.so, 0x0002): Library not loaded: @rpath/libffi.8.dylib
  Referenced from: /----/----/snowflake/lib/python3.8/site-packages/_cffi_backend.cpython-38-darwin.so

これはcffiが参照するファイルが存在しないことで発生しています。
この問題はcffiのversionが1.15.0であれば発生しないことがわかってます。
(たまたま環境を移行する前に1.15.0でやっていました)
cffiは1.15.0でM1チップに対応していて、1.15.1へのアプデで不具合が出てるみたいですね。

まとめ

  • venv(もしくはpipenv)でPython環境を作成する
  • pip install cffi==1.15.0でcffiのversionを落とす

両者とも綺麗な解決策ではないですが、、この時期に同様のエラーに遭遇したユーザーの手助けになるようにおいておきます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?