python - 如何使用 nix-shell 启用可选的构建依赖项?

标签 python opencv gtk nix nixos

我想在 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中的包定义中,有函数参数enableGtk2enableGtk3 在构建中打开可选依赖项。

我通读了几个 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/

相关文章:

python - 使用异步事件循环运行 tornado.testing.AsyncTestCase

c++ - OpenCV读取图像像素值

c - 如何将 GtkExpander 添加到 GtkScrolledWindow 中?

python - 如何将 ttk Treeview 的所有元素放置在左侧?

Python 多线程/多处理在 concurrent.futures 中非常慢

python - 将数据传递到 pycharm 的最佳方式是什么?

c++ - 继承自 OpenCV 类 - 编译错误

python - 如何将Meteor链接到Opencv python

c - 将换行符插入 GtkTextView 小部件(GTK+ 编程)

python - 为什么 css 样式不适用于 GtkButton?