MacでPython

MacでPythonの設定する方法の覚え書きです。

anyenv

anyenv が流行っているみたいらしいので、まず Homebrew でインストールします。

% brew install anyenv
anyenv 1.1.4
% echo 'eval "$(anyenv init -)"' >>  ~/.zshrc
% anyenv install --init

pyenv

anyenv で pyenv をインストールします。

% anyenv install pyenv
pyenv 2.3.3-5-ga8afc611

python

pyenv で python をインストールします。

% pyenv install 3.10.9

エラーがでたら?

ModuleNotFoundError: No module named '_lzma'

上記のエラーがでたら、xz をインストールしてみよう

% brew install xz

その後アンイストールして再インストールすること

% pyenv uninstall 3.10.9
%pyenv install 3.10.9

切り替え確認してみる。

% pyenv versions
* system (set by /Users/username/.anyenv/envs/pyenv/version)
  3.10.9

(システムのpythonコマンドが指定されている状態)
% python --version
pyenv: python: command not found (systemではpythonコマンドはなくpython3のみ?)
% python3 --version  
Python 3.9.6

(pyenvでインストールした3.10.9に切り替える)
% pyenv global 3.10.9
% pyenv versions     
  system
* 3.10.9 (set by /Users/username/.anyenv/envs/pyenv/version)
% python --version 
Python 3.10.9
% python3 --version
Python 3.10.9

(システムに戻す)
% pyenv global system

venv

仮想環境を作成します。

仮想環境のディレクトリを作成する。

% mkdir penvtest
% cd penvtest

まずは pyenv でシェル内での python のバージョンを指定する。

% python -V
pyenv: python: command not found <= pythonコマンドは利用できない状態
% pyenv shell 3.10.9 <= このシェル内では 3.10.9 を利用するように設定
% python -V
Python 3.10.9
% pyenv versions
  system
* 3.10.9 (set by PYENV_VERSION environment variable)

venv で仮想環境を作成する。

% python -m venv .venv <= ディレクトリ指定はなんでもいいが、.venvにしている
% ls -a
.		..		.venv <= .venv ディレクトリが作成される
% ls -a .venv
.		..		bin		include		lib		pyvenv.cfg <= 中はこんな感じ

venv の仮想環境に入る。

% source .venv/bin/activate
(.venv) % <= venvの環境に入ったのか分かるプロンプトに変更される

pip で仮想環境にパッケージをインストールする。

(.venv) % ls .venv/lib/python3.10/site-packages <= ここに仮想環境のパッケージが入る
_distutils_hack				pkg_resources
distutils-precedence.pth		setuptools
pip							setuptools-65.5.0.dist-info
pip-22.3.1.dist-info
(.venv) % pip list
Package    Version
---------- -------
pip        22.3.1
setuptools 65.5.0
(.venv) tmacoto@takamba2 penvtest % pip install numpy
Collecting numpy
  Using cached numpy-1.24.1-cp310-cp310-macosx_11_0_arm64.whl (13.9 MB)
Installing collected packages: numpy
Successfully installed numpy-1.24.1
(.venv) % pip list
Package    Version
---------- -------
numpy      1.24.1
pip        22.3.1
setuptools 65.5.0
(.venv) % ls .venv/lib/python3.10/site-packages
_distutils_hack				pip-22.3.1.dist-info
distutils-precedence.pth		pkg_resources
numpy						setuptools
numpy-1.24.1.dist-info		setuptools-65.5.0.dist-info
pip

仮想環境から出る。

(.venv) % deactivate 
% 

次回からは・・・

新しいシェルを立ち上げえたら、仮想環境の activate をするだけ。

% cd penvtest 
% python -V
pyenv: python: command not found <= まだ仮想環境に入っていないのでpythonコマンドは使えない
% source .venv/bin/activate
(.venv) % python -V <= 仮想環境に入ると指定したバージョンのpythonが起動する
Python 3.10.9
(.venv) % whereis python
python: /Users/username/Devel/Work/penvtest/.venv/bin/python <= リンクファイルになっている
(.venv) % readlink .venv/bin/python 
/Users/username/.anyenv/envs/pyenv/versions/3.10.9/bin/python

仮想環境内の bin ディレクトリの python コマンドが実行されるようになり、そのファイルは pyenv でバージョン指定してインストールした python へのリンクとなっている。

Poetry

最近は poetry が主流らしいので使ってみる。

インストール

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

$HOME/.local/bin をパスに追加する

% poetry --version
Poetry (version 1.4.2)

仮想環境を設定

既存のプロジェクトをPoetryで管理する

% cd project-A
% poetry init

色々聞かれるが、全部Enterで。pyproject.tomlというファイルが作成されます。

仮想環境のセットアップ

仮想環境を作成して、依存パッケージをインストールする。

% poetry install

Libraryディレクトリに環境設定ディレクトリが作られてしまう。
プロジェクトディレクトリに作成したいので、設定を変更する。
と、その前に今作ったのを削除しておく。

% poetry env list 
project-A-Xq_RMXBM-py3.10 (Activated)
% poetry env remove project-A-Xq_RMXBM-py3.10

下記のコマンドで仮想環境をプロジェクト内に作成するように設定する。

% poetry config --list
% poetry config virtualenvs.in-project true

改めてインストールを実行

% poetry install

.venv ディレクトリが作成されます。中身は venv で作った時とたぶん同じ。

依存パッケージの追加

% poetry add <package-name>

pyproject.toml にパッケージ名が追加されて、poetry.lock でバージョンが固定されます。

仮想環境で実行

% poetry shell
(project-A-py3.10) %

これで仮想環境のpythonが実行されるようになります。venvのactivateとほぼ同じです。
抜ける時は exit です。

一時的にpythonを実行する時は下記コマンドでもいけます。

% poetry run python <python-file>

パッケージで追加されたコマンドも実行できます。

コメント