自分用にM2チップmac miniを購入していろいろセッティングしたので覚え書きです。
XCodeをインストールする
せっかくMacなのでiOSアプリ作ってみたいですよね。
それ以外でもアプリケーションのインストールにXCodeが必要な場合があるようです。
App Storeからインストールできます。重たいのでかなり時間がかかります。
Homebrewをインストールする
Macでいろいろインストールしようと思うと入れておく必要があります。
ターミナルで
/bin/bash -c "$(curl -fsSL <https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh>)"
を実行するだけですが、わたしの場合これだけだとパスが通っていませんでした。
M2チップだとデフォルトで/opt/homebrew/bin/brewにインストールされるみたいですね。
インストール実行後に
==> Next steps:
Run these three commands in your terminal to add Homebrew to your PATH: echo '# Set PATH, MANPATH, etc., for Homebrew.' >> /Users/〇〇〇/.zprofile echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/〇〇〇/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"
が表示されるのでその通りに実行してパスを通す必要があります。〇〇〇のところはユーザー名を入れてください。
参考:https://zenn.dev/watakarinto/articles/16451707aa08d1
pyenvのインストール
Pythonのバージョンを管理するためにpyenvを入れます。
$ brew install pyenv
homebrew便利ですね〜
パスを通します
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
pyenvの使い方
インストールできるpythonのバージョンのリストを確認する
$ pyenv install --list
バージョンを指定してpythonをインストール
$ pyenv install [バージョン]
インストール済みのpythonのバージョンをシステム全体に適用
$ pyenv global [バージョン]
システム全体で適用されているPythonバージョンを確認
$ pyenv global
インストール済みのpythonのバージョンを特定のディレクトリに適用
$ pyenv local [バージョン]
特定のディレクトリで適用されているPythonバージョンを確認
$ pyenv local
参考:https://qiita.com/koooooo/items/b21d87ffe2b56d0c589b
poetryのインストール
ライブラリの管理のためにpoetyを入れます。
こちら↓を参考にしました。
言われた通りに
$ curl -sSL [<https://install.python-poetry.org>](<https://install.python-poetry.org/>) | python3 -
を実行しましたが、
Exception: This build of python cannot create venvs without using symlinks
というエラーが出てしまいました…
stackoverflowを参考にして、
$ brew poetry
でインストールできました。
poetryの使い方
新たにプロジェクトを作成する
$ poetry new <project-name>
↓のページを参考にしました。
Pythonパッケージの標準的なディレクトリ構成で自動的にファイルを作ってくれています。
REAME.rst … そのプロジェクトの概要を記述するファイル。GitHubだとトップページにこれを表示してくれますね。中身は空ですが、拡張子が
.rst
になっていて reStructuredText というマークアップ言語で書くことが期待されています。reStructuredTextはMarkdownが流行る前からPython系のドキュメントで使われていた形式ですが、Markdownの方が得意という方はこれをREADME.md
に変えてしまっても良いかなと思います。なお、GitHubではREADME.rst
だったとしても問題なくレンダリングしてくれます。project_abc/…
project_abc/
はこのパッケージのpythonソースコードを格納するディレクトリで、その元締めとして__init__.py
が作られています。ここではバージョンの定義だけがされています。pyproject.toml … Poetryプロジェクトに関するメタデータや依存関係を記述するためのファイルです。TOMLという形式で書かれています。これに関しては後述します。
pyproject.toml … Poetryプロジェクトに関するメタデータや依存関係を記述するためのファイルです。TOMLという形式で書かれています。これに関しては後述します。
tests/ …
https://qiita.com/ksato9700/items/b893cf1db83605898d8atests/
はユニットテストを格納するディレクトリで、__init__.py
とバージョン番号を確認する簡単なテストがtest_project_abc.py
に書かれています。
対話的にプロジェクトを始めたい場合はpoetry init
します。このコマンドはpyproject.tomlを対話的に作成することができます。
$ poetry init
This command will guide you through creating your pyproject.toml config.
Package name [username]:
Version [0.1.0]:
Description []:
Author [None, n to skip]:
License []:
Compatible Python versions [^3.11]:
Would you like to define your main dependencies interactively? (yes/no) [yes]
You can specify a package in the following forms:
- A single name (requests): this will search for matches on PyPI
- A name and a constraint (requests@^2.23.0)
- A git url (git+https://github.com/python-poetry/poetry.git)
- A git url with a revision (git+https://github.com/python-poetry/poetry.git#develop)
- A file path (../my-package/my-package.whl)
- A directory (../my-package/)
- A url (https://example.com/packages/my-package-0.1.0.tar.gz)
Package to add or search for (leave blank to skip):
Would you like to define your development dependencies interactively? (yes/no) [yes]
Package to add or search for (leave blank to skip):
Generated file
[tool.poetry]
name = "username"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.11"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
Do you confirm generation? (yes/no) [yes]
プロジェクト直下に仮想環境を作成する設定
先ほど作成したプロジェクトのディレクトリの中で次のコマンドを実行します。
$ poetry config virtualenvs.in-project true
↓のページを参考にしました。
確認
$ poetry config --list
実行すると、次のような設定が表示されてます。
cache-dir = “/home/〇〇〇/.cache/△△△” virtualenvs.create = true
virtualenvs.in-project = true virtualenvs.path = “{cache-dir}/virtualenvs”
virtualenvs.in-project = true
になっていることを確認します。
ライブラリのインストール
プロジェクトにお好きなライブラリを追加してください。
$ poetry add <package-name>
追加されたライブラリを確認するには次のコマンドを使います。
$ poetry show
はじめてpoetry addを実行すると、プロジェクトの中に「poetry.lock」ファイルができます。ここに追加したいライブラリの情報や依存関係が記載されます。「pyproject.toml」 ファイルにも新たに追加したパッケージとそのバージョンが記載されます。
poetryのpythonのバージョンを指定する
pyenvでインストールしたpythonのバージョンをpoetryに教えます。
$ poetry env use $(pyenv which python[バージョン])
これをしないと、pyproject.tomlの[tool.poetry.dependencies]に記載されたpythonのバージョン要件に合わせて自動的にpythonをインストールしてきてしまって、pyenvでインストールしたものとバージョンを合わせることができません。
poetryプロジェクトの中のpythonバージョンを確認するには、
$ poetry run python --version
仮想環境のインストール
「poetry.lock」
ファイルに記載された依存関係をもとにパッケージをインストールします。もしもpoetry.lockファイルがない場合は、pyproject.tomlファイルに記載されたライブラリをインストールします。
$ poetry install
poetry addしただけではライブラリがインストールされていないので注意が必要です。
仮想環境をアクティブにする【2023/10/24追記】
PCを再起動したりすると、poetryに登録されているはずなのに、ライブラリにアクセスできないことがあります。
poetryで構築した仮想環境をアクティブにする必要があります。
$ poetry shell
VSCodeでpoetryの環境を使う設定をする
こちら↓を参考にしました。
VSCodeを開いて、先ほど作成したプロジェクトのフォルダを開きます。
.ipynbの場合は、右上から実行するカーネルを選択します。
上でプロジェクト直下に仮想環境を作成する設定にしていると、.venvが表示されるはずです。
それを選択すると上でインストールしたライブラリの入った仮想環境で実行できます。
.pyファイルの場合は、プロジェクトのディレクトリの中に入って、ターミナルから実行できます。
おわりに
パスを通すところと、poetryで作った仮想環境をVSCodeで設定するところでかなり苦労しました…Anacondaはそのへん楽だなと思いましたが、バージョン管理などを考えるとpyenv + poetryのほうがいいよ〜と会社の人におすすめされたのでこのスタイルで環境構築してみました。
あたらしいパソコンでたくさんプログラミングするぞ〜!
コメント