FAQ
このセクションでは、よくある質問について説明します。ここに答えが見つからない場合は、コミュニティに連絡することを検討してください。
PyTorchをインストールするには?
PyTorchは、PyPIを介してインストールされないため、手動でソースを設定する必要があります。これらのソースは、シンプルなプロジェクトの場合はpyproject.toml
で、グローバルにはconfigで設定できます。
-
オプション1:
pyproject.toml
[[tool.rye.sources]] name = "pytorch" url = "https://download.pytorch.org/whl/cpu"
-
オプション2:
~/.rye/config.toml
[[sources]] name = "pytorch" url = "https://download.pytorch.org/whl/cpu"
その後、pytorchを期待どおりに追加できます。
rye add torch torchvision torchaudio
Windowsの開発者モード
Ryeはシンボリックリンクを必要としませんが、シンボリックリンクがある方がはるかにうまく機能します。Windowsでは、シンボリックリンクのサポートは特権アカウントに制限されています。これは、シンボリックリンクがWindowsへの後発の追加であり、一部のアプリケーションはシンボリックリンクを念頭に置いて開発されていないため、誤動作を引き起こしたり、最悪の場合、これらのアプリケーションでセキュリティ上の問題が発生する可能性があるためです。ただし、シンボリックリンクのサポートは、最新のWindowsバージョンで「開発者モード」がアクティブ化されている場合に有効になります。
「開発者モード」の有効化は、Windowsの新しいバージョンで変更されました。古いバージョンでは
- Win+Iを押して設定を開きます。
- 設定ダイアログで、「プライバシーとセキュリティ」をクリックします。
- 「セキュリティ」セクションで、「開発者向け」をクリックします。
- 「開発者モード」トグルを有効にします。
- 「開発者機能を使用する」ダイアログで、「はい」をクリックして確認します。
より新しいバージョンでは
- Win+Iを押して設定を開きます。
- 設定ダイアログで、「システム」をクリックします。
- 「システム」セクションで、「開発者向け」をクリックします。
- 「開発者モード」トグルを有効にします。
- 「開発者機能を使用する」ダイアログで、「はい」をクリックして確認します。
有効にしないとどうなりますか?
Ryeはハードリンクとジャンクションポイントに自動的にフォールバックするため、シンボリックリンクの有効化は厳密には必須ではありません。ただし、シンボリックリンクが有効になっていないと、次の理由により、最終的にユーザーエクスペリエンスが悪化します。
- カスタムツールチェーンの登録では、実際のシンボリックリンクではなくプロキシファイルが使用されるため、
.rye\py
パス内の実行可能ファイルは実行できません。 - すべてのシムはハードリンクとしてインストールされます。これにより、Pythonの使用中にRyeをアップグレードすると問題が発生する可能性があります。これらのハードリンクは、古いRye実行可能ファイルを指し続け、ハードドライブの使用量を増やします。
- 仮想環境は、シンボリックリンクではなくコピーで作成されます。
- ディレクトリへのシンボリックリンクが使用される場所では、ジャンクションポイントが使用されます。一部のツールは、ジャンクションポイントを誤って検出しない可能性があり、これにより、仮想環境を削除すると、誤ってその背後にあるツールチェーンも削除または破壊する可能性があります。
Linuxでの共有ライブラリの欠落
Ryeが使用するPythonビルドには、Linux Standard Base Core Specification(LSB)に準拠したLinuxインストールが必要です。残念ながら、すべてのLinuxディストリビューションが、すぐにその仕様に厳密に従っているわけではありません。特に、ライブラリlibcrypt.so.1
は、特定のLinuxディストリビューションには通常インストールされていませんが、_crypt
標準ライブラリモジュールはそれに依存しています。Linuxディストリビューションに応じて、これを解決するために異なるコマンドを実行する必要があります。
- archlinux:
pacman -S libxcrypt-compat
- CentOS/RedHat:
dnf install libxcrypt-compat
また、別のldd
(例:Homebrew)がシステムのものに影を落としている場合に、libcrypt.so.1
がインストールされているにもかかわらず、インストール時にエラーが生成されたという報告もあります。その場合は、PATH
でデフォルトの優先度を高くした後、インストールを再度試してください。
export PATH="/usr/bin:$PATH"
curl -sSf https://rye.dokyumento.jp/get | bash
ビルド時のパスへの参照
はスタンドアロンのPythonビルドを使用することを推奨します。Pythonは歴史的にポータブルビルドに対応していなかったため、このアプローチにはまださまざまな制限があります。その1つは、ビルドされたPythonディストリビューションが絶対パスやその他のビルド時の設定をキャプチャすることです。これらのファイルパスは、ビルドツールがCコンパイラを呼び出すためによく使用されます。たとえば、C拡張機能をビルドするときに、error: stdio.h: No such file or directory
のようなコンパイラエラーが発生する可能性があります。この問題に対する既知の解決策は、ポータブルでないツールチェーンを登録する以外には現在ありません。
この問題はpython-build-standalone
から継承されたものであり、ドキュメントに詳細が記載されています:ビルド時のパスへの参照。また、Ryeのオープンな問題もあります:Issue #621。
TKinterのサポート
TKinterは内部でTCLを使用します。残念ながら、これはランタイムサポートも必要であることを意味します。このランタイムサポートはポータブルPythonビルドによって提供されますが、macOSおよびLinuxでTCLが初期化される方法は、仮想環境でこれらのファイルを見つけることができません。新しいバージョンのRyeでは、次のような方法で、TCL_LIBRARY
およびTK_LIBRARY
環境変数が自動的にエクスポートされます。
import os
import sys
os.environ["TCL_LIBRARY"] = sys.base_prefix + "/lib/tcl8.6"
os.environ["TK_LIBRARY"] = sys.base_prefix + "/lib/tk8.6"
Pythonインタラクティブプロンプトの入力がおかしい
Ryeが使用するPythonビルドは、ライセンス上の理由から、readline
ではなくlibedit
に対してコンパイルされます。libedit
の制限により、この結果として入力時にUnicodeの問題が発生する可能性があります。ただし、場合によっては、バックスペースキーが機能しない、または矢印キーが期待どおりに機能しないことに気付く場合もあります。これは、terminfoデータベースが見つからないことが原因である可能性があります。
この問題の解決策については、スタンドアロンPythonビルドのドキュメントにある動作の癖ガイドを参照してください。
Ryeを他のPythonインストールと並行して使用できますか?
Ryeはその実験的な性質から、既存のPythonワークフローを中断させたくありません。そのため、他のPythonインストールと並行して使用することは意図的にサポートされています。RyeシムがPATH
で最初に表示されていても、Ryeは、Ryeで管理されていないプロジェクトを含むフォルダーで呼び出された場合は、検索パス上の別のPythonインストールを自動的に解決します。
そのため、答えは明確なはい!です。
Musl/Alpineのサポート
ブートストラップ時に、「そのようなファイルまたはディレクトリはありません(os error 2)」のような混乱を招くエラーが発生することがあります。これは、AlpineのようなMUSLベースのLinuxシステムで発生する可能性があります。その理由は、Ryeがglibcを使用しないLinuxシステムと互換性のない、ディストリビューションに依存しないPythonインタープリターをダウンロードするためです。今日の解決策は、他の手段でPythonをインストールし、カスタムRYE_TOOLCHAIN
を使用してRyeをインストールすることです。詳細については、カスタマイズされたインストールを参照してください。
Wheelにファイルがないように見える
rye build
を実行していて、hatchlingを使用している場合、wheelにファイルがないという問題が発生する可能性があります。これは、rye build
がwheelをビルドするために内部で「build」を使用しているためです。ビルドモードは2つあり、場合によっては、wheelが最初にsdistからビルドされます。したがって、sdistに必要なデータファイルが含まれていない場合、結果のwheelも正しくありません。
これは、sdistのhatch構成のinclude
にファイルを追加することで修正できます。たとえば、pyproject.toml
に追加された次の行は、my_package
内のデータファイルとすべてのテストを、wheelがビルドされるsdistに追加します。
[tool.hatch.build.targets.sdist]
include = ["src/my_package", "tests"]
仮想環境を移動できますか?
Ryeは、仮想環境(.venv
)をワークスペースのルートフォルダーに配置することを非常に意図しています。仮想環境の再配置はサポートされていません。これは、ツールがさまざまな複雑な代替手段に対処する必要がなく、それを検出するための簡単なアルゴリズムに依存できるようにするための非常に意図的な決定です。これは設定よりも規約の一形態であり、エディターの統合にも役立ちます。
これにはいくつかの既知の欠点があります。たとえば、プロジェクトをDropboxに配置している場合、このフォルダーが同期されます。これを回避する方法として、Ryeは、既知のサポートされているクラウド同期システムのクラウド同期を無効にするために必要なフラグで仮想環境を自動的にマークします。
この動作をオーバーライドするには、behavior.venv-mark-sync-ignore
構成キーをfalse
に設定できます。
Ryeにトロイの木馬「Bearfoos」が含まれているのはなぜですか?
残念ながら、WindowsはRyeにトロイの木馬「Win32/Bearfoos.A!ml」が含まれていると不満を言いたがります。これは、コンパイラがRustで記述されたトロイの木馬に関連付けられているいくつかのバイトを出力するため、Rustで記述されたいくつかのプログラムで時々発生するようです。
無視できます。詳細については、ryeに関連付けられたWindows Bearfoosウイルスのディスカッションを参照してください。