1

我想在 nix-shell 中使用支持 gtk 的 opencv 和 python 3。

我可以使用以下命令启动非 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,有函数参数enableGtk2,并且enableGtk3可以在构建中打开可选依赖项。

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

打开可选依赖项是非常基础的,所以我希望它可以使用命令行工具来实现,即nix-shell. 有人知道它是怎么做的吗?

4

1 回答 1

3

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

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

另一种解决方案是python35Packages.opencv3一劳永逸地覆盖该软件包,如nixpkgs 文档中所述。然后你就可以不加改变地使用你的命令了。

于 2017-03-10T10:42:15.393 回答