【问题标题】:How to enable an optional build dependency using nix-shell?如何使用 nix-shell 启用可选的构建依赖项?
【发布时间】:2017-07-30 10:09:01
【问题描述】:

我想在 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。有谁知道它是怎么做的吗?

【问题讨论】:

    标签: python opencv gtk nix nixos


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 2018-05-18
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多