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>
パッケージで追加されたコマンドも実行できます。
コメント