2017-03-09 98 views
0

我想在nix-shell中使用gtk-enabled opencv和python 3。如何使用nix-shell启用可选的构建依赖项?

我能够与推出非GTK启用python3/OpenCV的环境:

nix-shell --pure -p python35Packages.opencv3 

然而,命令开窗失败:

[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包定义,有是功能参数enableGtk2enableGtk3,它们打开构建中的可选依赖项。

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

打开一个可选的依赖关系是非常重要的,所以我期望它可以使用命令行工具,即nix-shell来实现。任何人都知道它是如何完成的?

回答

2

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

nix-shell -p "python35Packages.opencv3.override { enableGtk2 = true; }" 

另一个解决方案是重写python35Packages.opencv3包一劳永逸作为nixpkgs documentation解释。那么你可以不改变地使用你的命令。

相关问题