1
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?

M1/M2 macのarm64シェルでPython−MIPを動かすには?

Last updated at Posted at 2023-12-12

概要

この記事は、下記の続編です。「arm64のシェルでx86_64のPythonを動かす方法」を説明します。

上記の記事では、x86_64のzsh上で、x86_64でしか動かないPython−MIPを稼働させました。
しかし、ときにはarm64のzsh上で、x86_64のPythonを動かしたい場合もあるでしょう。たとえば、PoetryでPython−MIPを動かしたい場合があたります。

前提条件

Rosetteを有効化してください。

Python 3.11を使います。
Python 3.11は、公式サイトmacOS 64-bit universal2 installer版をインストールされている必要があります。

また、下記のようにPoetryをインストールしているとします(%はシェルのプロンプトです)。

zsh
% curl -sSL https://install.python-poetry.org | python3 -

さらに、プロジェクト内に仮想環境を作成するように設定します。

zsh
% poetry config --local virtualenvs.in-project true

PoetryでPython−MIPを動かすには

ここからは、実際に実行しながら説明します。前提のようにPoetryをインストールすると、下記のようにx86_64上ではPoetryが動きません。

zsh
% arch --x86_64 poetry
Traceback (most recent call last):
(中略)
(mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))

本記事では、arm64上のシェルで、Poetryを使ってPython−MIPを動かすことがゴールになります。まずは、Poetryの新規プロジェクトを作成します。

zsh
# arm64の確認
% uname -m
arm64
# Poetryの新規プロジェクト作成
% poetry new sample
Created package sample in sample
% cd sample

Poetryで仮想環境を作成するにはpoetry installとしますが、この方法ではうまくいきません。次のように、仮想環境を作成する必要があります。

zsh
% python3.11-intel64 -m venv venv .venv

python3.11-intel64は、x86_64版のPythonです。これで、x86_64版のPythonの仮想環境が作成されればいいのですが、作成されません。そこで、次のように自前で修正します。

zsh
% cd .venv/bin
% rm python*
% ln -s python3.11-intel64 python
% ln -s python3.11-intel64 python3
% ln -s python3.11-intel64 python3.11
% ln -s /Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11-intel64
% cd ../..

これで、Poetryの仮想環境がx86_64になります。

続いて、pyproject.tomlを次のように修正してください。

pyproject.toml
[tool.poetry.dependencies]
python = "^3.11"



[tool.poetry.dependencies]
python = "~3.11"

^3.11は、>=3.11.0 <4.0.0を意味してますが、この範囲に対応するPython−MIPのバージョンは存在しません。
~3.11とするとことで、>=3.11.0 <3.12.0の範囲になり、Python−MIPの1.15.0が対応します。

下記のようにPython−MIPをインストールしましょう。

zsh
% poetry add mip

ここまでくると、PoetryでPython−MIPを実行できます。

zsh
% poetry run python -c 'import mip; m = mip.Model()'

x86_64の仮想環境を作成するには(まとめに変えて)

arm64シェルでx86_64のPythonを動かす仮想環境(.venv)を作成するには、次のようにします。

zsh
% python3.11-intel64 -m venv venv .venv
% cd .venv/bin
% rm python*
% ln -s python3.11-intel64 python
% ln -s python3.11-intel64 python3
% ln -s python3.11-intel64 python3.11
% ln -s /Library/Frameworks/Python.framework/Versions/3.11/bin/python3.11-intel64
% cd ../..

アクティベートは、通常通りにできます。

zsh
% source .venv/bin/activate

なお、.venvは、venvなどの他の名前に変更できます。

以上

1
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
1
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?