0
0

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でPython−MIPを動かすには?(uv版)

Last updated at Posted at 2024-09-03

この記事は、次の2記事の続編です。M1/M2 macでPython−MIPを動かす方法を説明します。

Python−MIPに付属するソルバーCBCは、x86_64用であるため、そのままでは動きません。
また、Python-MIPはCFFIでソルバーを動かすため、Python自身がx86_64上で動く必要があります。

ここでは、uvを使って動かす方法を紹介します。

準備

Rosetta2とuvが必要です。
Rosetta2を有効にするには、一度だけ次のようにします。

/usr/sbin/softwareupdate --install-rosetta --agree-to-license

macOSやLinuxでuvをインストールするには、次のようにします。

curl -LsSf https://astral.sh/uv/install.sh | sh

さらに、次のようにコマンドの補完設定用のファイルを作成します。
※ zshを想定しています。

~/.cargo/bin/uv generate-shell-completion zsh > ~/.uv_completion.sh

uvを使うために次を~/.zprofileに追加し、source ~/.zprofileとしてください。

source $HOME/.cargo/env
source $HOME/.uv_completion.sh

X86_64用Pythonのインストール

次のようにすると、インストール可能なPythonのバージョンを確認できます。

uv python list --all-platforms

macos-x86_64を含むものを探してください。今回は、次のようにcpython-3.12.5-macos-x86_64-noneを使います。

uv python install cpython-3.12.5-macos-x86_64-none

仮想環境の構築

次のようにして、新しいプロジェクトを作成して仮想環境を構築しましょう。

uv init mip-sample
cd mip-sample
uv python pin cpython-3.12.5-macos-x86_64-none

.python-versionというファイルが作成され、pinで指定したバージョンが入ります。

warning: No interpreter found for cpython-3.12.5-macos-x86_64-none in managed installations or system pathと出ますが、使えるようです。

次のようにして、Python-MIPをインストールします。

uv add mip

サンプルの実行

カレントディレクトリのhello.pyを次のように修正してみましょう。

from mip import Model, maximize, minimize, xsum

m = Model()  # 数理モデル
# 変数
x = m.add_var("x")
y = m.add_var("y")
# 目的関数
m.objective = maximize(100 * x + 100 * y)
# 制約条件
m += x + 2 * y <= 16  # 材料Aの上限
m += 3 * x + y <= 18  # 材料Bの上限
m.optimize()  # ソルバーの実行
print(x.x, y.x)  # 4.0 6.0

次を実行してCBCが動くことを確認できます。

uv run hello.py

uvの詳細については、ドキュメントを参考にしてください。

まとめ

  • arm64アーキテクチャでも、uvを使うことでx86_64のPythonやパッケージをインストールして実行できる

以上

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?