我想在 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
)来实现。有谁知道怎么做吗?
最佳答案
这是您在这种情况下需要使用的命令:
nix-shell -p "python35Packages.opencv3.override { enableGtk2 = true; }"
另一个解决方案是一劳永逸地覆盖 python35Packages.opencv3
包,如 nixpkgs documentation 中所述。 。然后您就可以不加更改地使用您的命令。
关于python - 如何使用 nix-shell 启用可选的构建依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42695085/