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 の再現性を両立させた開発が可能になります。