どうも!初めましての方は初めまして、初心者のWebサイト勉強のとみーです!
2023年に登場した Python のパッケージマネージャーの Rye は、
乱立する数々の Python のパッケージ管理ツールの問題を克服できる
ため、徐々に人気を集めてきています。
とみーも最近使い始めてみましたが、非常に便利です!
そんな Rye ですが、Open3D とはどうやら相性が悪いようで、インストール時にエラーが発生することがわかりました。
色々試行錯誤しているうちに解決方法がわかったので、今回はそのエラーの対処法をご紹介します!
パッケージマネージャー Rye とは
Rye は2023年5月17日に初リリースされた、Rust 製の Python 用パッケージマネージャーです。
Python の Web フレームワークとして有名な Flask の作者が、Python のパッケージ周りのエコシステムに関する問題に対処するために個人的に作成したという経緯があります。
Python のパッケージマネージャー
Python の主要なパッケージマネージャーには、次のようなものがあります。
pip
はパッケージの依存関係チェックが弱く、仮想環境を作るためには別のツールが必要になります。
pipenv
やconda
は仮想環境まで作れますが、依存関係のチェックが遅いことで知られています。
conda install
が何時間も経ったあとに「依存関係が解決できなかった」とエラーが出ることもあり、個人的にはあまり使いたくないのが本音です。。
poetry
はパッケージの依存関係をチェックでき、仮想環境も作れ、動作も比較的早い万能なパッケージマネージャーです。pipenv
やconda
に代わるツールとして、最近よく使われている印象があります。
Python のバージョン管理
ただし、実際にパッケージの管理を行う際には、パッケージのバージョンだけでなく Python 自体のバージョンも重要になってきます。
Python 3.8 ならバージョン 1.0.0、Python 3.9 ならバージョン 1.2.0 のように、Python のバージョンによってインストールされるパッケージのバージョンが異なることがあるためです。
上にあげたパッケージマネージャーはconda
を除いて Python のバージョン管理ができません。
パッケージによってはconda
でインストールできないものがあり、その場合にはpip
を使うことになります。
しかし、依存関係がごちゃごちゃになるためconda
とpip
の併用は推奨されません。
そうすると、Python のバージョン管理を行うためのツールを使う必要が出てきます。
したがって、きちんとバージョン管理しようとすると、環境を整備するために2つのツールを用意しなければなりません。
- パッケージマネージャー
- バージョン管理ツール
とみーの周りでは、pyenv
+poetry
の組み合わせが多い印象です。
Python のバージョンもパッケージも Rye で一元管理
Rye を使うと、Rye だけで
- パッケージマネージャー
- バージョン管理ツール
の両方の役割を果たすことができます。
パッケージマネージャーには〇〇を使って、バージョン管理には△△を使って…と悩む必要がなくなります!
仮想環境の作成ももちろんできますし、Rust 製なので動作速度も十分です。
Rye をインストールするだけで環境が用意できるのがありがたいですね。
Rye のインストール方法
Rye のインストール方法は、公式ページで紹介されています。
次のコマンドを実行するだけです。
curl -sSf https://rye-up.com/get | bash
Windows の場合は、公式ページから.exe
ファイルをダウンロードして実行します。
rye add open3d
で発生するエラー
前置きが長くなりましたが、ここからが本題です。
Rye ではパッケージを追加する際に、rye add
コマンドを実行します。
Open3D の場合、以下のようになります。
rye add open3d
rye add
はインストール可能なバージョンを探し、pyproject.toml
に追加します。
しかし、Open3D の場合、上のコマンドを実行すると次のようなエラーが返ってきます。
error: did not find package 'open3d' without using pre-releases.
根本的な原因は不明ですが、どうやら Rye がopen3d
のパッケージを見つけられないようです。
rye add open3d
で発生するエラーの対処法
エラーの対処法はとってもシンプルです。
rye add
がpyproject.toml
にopen3d
を追加できないのであれば、手動でpyproject.toml
にopen3d
を追加してあげれば OK です。
- 使用する Python のバージョンに対応した Open3D のバージョンを Open3D のドキュメントから見つける
pyproject.toml
のdependencies
にopen3d
をバージョン指定し追加するrye sync
を実行
[project]
name = "app"
version = "0.1.0"
dependencies = [
"open3d>=0.17.0", ← これを追加
]
rye add
はあくまでpyproject.toml
にパッケージを追加するだけで、実際のインストールはrye sync
コマンドで行います。
pyproject.toml
にopen3d
が追加できたら、rye sync
を実行すれば完了です!
コメント