【问题标题】:Can't find MiniZinc driver找不到 MiniZinc 驱动程序
【发布时间】:2021-05-06 11:27:27
【问题描述】:

我正在尝试在使用 minizinc 模块的 Ubuntu 上运行 Python 脚本。

脚本在 Windows 机器上运行良好。但是,当我尝试在 Ubuntu 上运行相同的脚本时,出现以下错误:

RuntimeWarning: MiniZinc was not found on the system. No default driver could be initialized.

minizinc 模块文档对 Linux 系统上的此错误发出警告,并指出可以使用 minizinc.find_driver() 函数手动提供驱动程序的路径。我尝试使用该函数手动设置驱动程序路径,但出现相同的错误(我可能设置错误)。

你可能会说我是新手,我只是想知道是否有人能告诉我如何解决这个问题?

【问题讨论】:

    标签: python linux minizinc


    【解决方案1】:

    有两种方法可以让 MiniZinc Python 知道 MiniZinc 的安装位置:

    • 您可以将PATH 环境变量附加到安装了minizinc 可执行文件的目录中。
    • 您可以使用find_driver 函数选择特定的驱动程序,然后对返回的Driver 对象使用make_default 方法。

    对于任何一种方法,您首先需要找到安装了minizinc 可执行文件的位置。如果您使用 AppImage 安装,则可以创建符号链接:

    $ ln -s MiniZinc<something>.AppImage /my/path/to/minizinc
    

    这个符号链接将作为 MiniZinc 可执行文件运行。在以下示例中,我将使用 /my/path/to/minizinc 作为 MiniZinc 的位置,但您可以在自己的计算机上找到它。

    方法一

    除非您想使用多个版本的 MiniZinc,否则通常首选使用第一种方法。如果您有要执行的 MiniZinc Python 脚本script.py。您只需先将可执行位置添加到PATH 环境变量,然后运行您的脚本。

    $ export PATH=$PATH:/my/path/to
    $ python script.py
    

    您只需为每个终端会话设置一次PATH,因此之后您可以重复运行第二行。如果您经常使用 MiniZinc,那么将这行 export 发送给您 .bashrc 可能是个好主意(或者取决于您使用不同文件的外壳)。

    方法二

    另一种方法是编辑您的 MiniZinc Python 脚本。你曾经拥有的地方

    import minizinc
    
    [SOMETHING]
    

    你现在可以写

    import minizinc
    
    my_driver = minizinc.find_driver("/my/path/to")
    my_driver.make_default()
    
    [SOMETHING]
    

    为了确保它找到了可执行文件,您甚至可以添加 print(my_driver) 以便查看它找到了哪个 MiniZinc 可执行文件。

    请注意,此方法仍然会给您一个警告,因为在导入时,MiniZinc Python 找不到驱动程序。它还使您的 Python 代码的可移植性降低,因为其他人可能已将 MiniZinc 安装在不同的位置。

    【讨论】:

      猜你喜欢
      • 2019-07-17
      • 2016-07-14
      • 2016-08-05
      • 2016-09-03
      • 2022-01-23
      • 2012-02-09
      • 2017-07-22
      相关资源
      最近更新 更多