3804232fe68bbf8e0273c1a30380284cf8c5a51d
nix/uv2nix/uv2nix\343\202\222\344\275\277\343\201\243\343\201\237Nix + uv\343\201\247\343\201\256Python\347\222\260\345\242\203\346\247\213\347\257\211.md
| ... | ... | @@ -1,7 +1,7 @@ |
| 1 | 1 | # このページについて |
| 2 | 2 | |
| 3 | 3 | nixを使ってみようかなーと思っていたところ、nixとuvを結合するuv2nixというツールがあるのを知り、NotebookLMでまとめてみました。 |
| 4 | -この文章はNotebookLMによって生成されました。 |
|
| 4 | +この文章はNotebookLMによって生成されました。初めて使ってるので、間違っているところがあるかも。 |
|
| 5 | 5 | |
| 6 | 6 | ## ライセンスについて |
| 7 | 7 | |
| ... | ... | @@ -104,25 +104,18 @@ nix develop |
| 104 | 104 | ### VS Codeでのimportエラーを修正する方法 |
| 105 | 105 | |
| 106 | 106 | このままだとプロジェクトルートに.venvディレクトリが存在しないため、VS Code上でpandasパッケージへのimportエラーが発生する。 |
| 107 | -VS Codeに[direnv/direnv-vscode: unclutter your .profile](https://github.com/direnv/direnv-vscode)をインストールすることで、エディタ上でパッケージへの参照が可能となる。 |
|
| 108 | 107 | |
| 109 | -## 4. トラブルシューティング:C拡張/バイナリライブラリ |
|
| 108 | +[uv2nix-add-package-sample/flake.nix at 5518b2f18754f52a4f3a512005d49d9b35e1ab93 · takanotume24/uv2nix-add-package-sample](https://github.com/takanotume24/uv2nix-add-package-sample/blob/5518b2f18754f52a4f3a512005d49d9b35e1ab93/flake.nix#L88)のように、 |
|
| 110 | 109 | |
| 111 | -NumPy や PyQt のような C/C++ ライブラリに依存するパッケージを追加した場合、PyPI からダウンロードされた Wheel(バイナリ)が動かないことがあります。 |
|
| 112 | - |
|
| 113 | -* **自動修正**: 通常、`uv2nix` は `autoPatchelfHook` を使用して、Linux 上でバイナリが動くように自動修正を試みます。 |
|
| 114 | -* **手動修正(オーバーライド)**: それでも「ライブラリが見つからない(例: `libstdc++.so.6 missing`)」というエラーが出る場合は、`flake.nix` で不足しているライブラリを手動で追加する必要があります。 |
|
| 115 | - |
|
| 116 | -**修正例 (`flake.nix` 内のオーバーレイ):** |
|
| 117 | -```nix |
|
| 118 | -(final: prev: { |
|
| 119 | - numpy = prev.numpy.overrideAttrs (old: { |
|
| 120 | - # 不足しているライブラリ (例: zlib, stdenv.cc.cc.lib) を buildInputs に追加 |
|
| 121 | - buildInputs = old.buildInputs ++ [ final.pkgs.zlib ]; |
|
| 122 | - }); |
|
| 123 | -}) |
|
| 124 | 110 | ``` |
| 125 | -> **Note**: 現在、この不足ライブラリの特定と追加を自動化するツール(auto-rider)が開発中ですが、現時点では手動での対応が必要になることがあります。 |
|
| 111 | + shellHook = '' |
|
| 112 | + unset PYTHONPATH |
|
| 113 | + export REPO_ROOT=$(git rev-parse --show-toplevel) |
|
| 114 | + ln -sfn ${virtualenv} .venv |
|
| 115 | + ''; |
|
| 116 | +``` |
|
| 117 | + |
|
| 118 | +を追加する。 |
|
| 126 | 119 | |
| 127 | 120 | --- |
| 128 | 121 | この構成により、`flake.nix` の管理コストを最小限に抑えつつ、Python エコシステムの利便性と Nix の再現性を両立させた開発が可能になります。 |