Python 如何使用nixshell启用可选的生成依赖项?

Python 如何使用nixshell启用可选的生成依赖项?,python,opencv,gtk,nix,nixos,Python,Opencv,Gtk,Nix,Nixos,我想在nix shell中使用支持gtk的opencv和Python3 我能够启动一个不支持gtk的python3/opencv环境,它具有: nix-shell --pure -p python35Packages.opencv3 但是,打开windows的命令失败: [nix-shell:~/src/nixpkgs/pkgs/development/libraries/opencv]$ python Python 3.5.3 (default, Jan 17 2017, 07:57:56)

我想在nix shell中使用支持gtk的opencv和Python3

我能够启动一个不支持gtk的python3/opencv环境,它具有:

nix-shell --pure -p python35Packages.opencv3
但是,打开windows的命令失败:

[nix-shell:~/src/nixpkgs/pkgs/development/libraries/opencv]$ python
Python 3.5.3 (default, Jan 17 2017, 07:57:56) 
[GCC 5.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.namedWindow("foo") 
OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /tmp/nix-build-opencv-3.2.0.drv-0/opencv-3.2.0-src/modules/highgui/src/window.cpp, line 565
/nixpkgs/pkgs/development/libraries/opencv/3.x.nix
中的包定义中,有一些函数参数
enableGtk2
enableGtk3
打开构建中的可选依赖项

我通读了几个nix教程和该语言的整个语法定义


打开一个可选的依赖项是非常基本的,所以我希望它可以使用命令行工具,即
nixshell
。有人知道这是怎么做的吗?

这是您在这种情况下需要使用的命令:

nix-shell -p "python35Packages.opencv3.override { enableGtk2 = true; }"
另一个解决方案是一劳永逸地覆盖
python35Packages.opencv3
包,如中所述。然后您就可以不加更改地使用您的命令