このPythonライブラリをインストールしようとしています
python3.6-geopandas-0.3.0
。正常にインストールしました
$ nix-env -iA nixpkgs.python3Packages.geopandas
しかし、私のPython環境に含まれるように式を作成する必要があります。
with import <nixpkgs> {};
python36.withPackages (ps: with ps; [
geopandas
])
その結果、私は得た。
installing ‘python3-3.6.4-env’
error: undefined variable ‘geopandas’
どちらも私のシステムに設定されていますnixos
。nixpkgs-unstable
しかし、それが正しいかどうかはわかりません。nixos
ルートとnixpkgs
ユーザーチャンネルがあります。
$ echo $NIX_PATH
nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels
nixpkgs-unstable
上記の式を正常に実行できるように、ユーザーのデフォルトチャンネルを設定するか、少なくともパッケージをオーバーレイとして表示したいと思います。
答え1
あなたの表現は今、nixpkgsの専門家である私にぴったりです。 17.09安定ブランチに存在しないバージョンなど、予期しない以前のNIX_PATH
バージョンを使用していないかどうかを調べます。<nixpkgs>
geopandas
答え2
NixOSでこれを再現できました。
あなたがそれを見つけたら、あなたのNIX_PATH
コレクションは単にnixpkgs
シンボリックリンクです。動作する有効なチャネルパスを指すと予想されるすべての式を取得することは、少しトリックかもしれません。 (たとえこれがnixシステムの要件ではないと考えており、以下に由来するようです。/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs
/nix/var/nix/profiles/per-user/root/channels/nixos/
<nixpkgs>
nixデーモン)。
この問題を解決するには、実際のnixpkgsチャネルを指すように上書きするか、式でチャネルを使用するNIX_PATH
代わりにチャネルへのパスを明示的に宣言する必要があります。<nixpkgs>
以下で利用可能なチャンネルを見つけることができます~/.nix-defexpr
。
$tree -l -L 2 ~/.nix-defexpr/
/home/user1/.nix-defexpr/
├── channels -> /nix/var/nix/profiles/per-user/user1/channels
│ ├── ...
│ └── nixpkgs -> /nix/store/qz1.../nixpkgs
└── channels_root -> /nix/var/nix/profiles/per-user/root/channels
├── ...
└── nixos -> /nix/store/53b.../nixos
(channels
ユーザーごとのチャンネルとchannels_root
ルートで購読し、すべてのユーザーが利用できるチャンネルを含む)
したがって、user1のサブスクリプションを使用することにした場合は、nixpkgs
次のようにします。
NIX_PATH="nixpkgs=/home/user1/.nix-defexpr/channels/nixpkgs" nix-env -f default.nix -i