이 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