在Win10中通过本机接口在Python中运行Minizing

2024-05-15 02:35:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在使用本机python接口时通过python调用minizing

该界面在Ubuntu下运行,但在Win10下不运行

我使用的代码如下所示,可在MinizingA Basic Example的官方网站上找到

我已经创建了nqueens.mzn文件并将其添加到项目目录中

我得到的错误如下:

Traceback (most recent call last):
  File "C:/Users/Sallo/PycharmProjects/MiniZincTest/main.py", line 11, in <module>
    result = instance.solve()
  File "C:\Users\Sallo\Python\Python37\lib\site-packages\minizinc\instance.py", line 99, in solve
    return asyncio.run(coroutine)
  File "C:\Users\Sallo\Python\Python37\lib\asyncio\runners.py", line 43, in run
    return loop.run_until_complete(main)
  File "C:\Users\Sallo\Python\Python37\lib\asyncio\base_events.py", line 579, in run_until_complete
    return future.result()
  File "C:\Users\Sallo\Python\Python37\lib\site-packages\minizinc\CLI\instance.py", line 394, in solve_async
    **kwargs,
  File "C:\Users\Sallo\Python\Python37\lib\site-packages\minizinc\CLI\instance.py", line 310, in solutions
    proc = await self._driver.create_process(cmd, solver=self._solver)
  File "C:\Users\Sallo\Python\Python37\lib\site-packages\minizinc\CLI\driver.py", line 170, in create_process
    stderr=asyncio.subprocess.PIPE,
  File "C:\Users\Sallo\Python\Python37\lib\asyncio\subprocess.py", line 217, in create_subprocess_exec
    stderr=stderr, **kwds)
  File "C:\Users\Sallo\Python\Python37\lib\asyncio\base_events.py", line 1529, in subprocess_exec
    bufsize, **kwargs)
  File "C:\Users\Sallo\Python\Python37\lib\asyncio\base_events.py", line 458, in _make_subprocess_transport
    raise NotImplementedError
NotImplementedError

代码如下:

from minizinc import Instance, Model, Solver

# Load n-Queens model from file
nqueens = Model("./nqueens.mzn")
# Find the MiniZinc solver configuration for Gecode
gecode = Solver.lookup("gecode")
# Create an Instance of the n-Queens model for Gecode
instance = Instance(gecode, nqueens)
# Assign 4 to n
instance["n"] = 4
result = instance.solve()
# Output the array q
print(result["q"])

enter image description here


Tags: instanceinpyasyncioliblineresultusers
2条回答

这个问题是由于对asyncio库的支持有限造成的。在Python 3.8之前,默认事件循环不支持Minizing Python库使用的功能。这个问题是在Minizing Python问题解决程序(https://gitlab.com/minizinc/minizinc-python/issues/14)上报告的,并很快得到修复

昨天,Minizing Python发布了新版本0.2.1,其中包括此修复程序和一些小改动。现在它可以使用Python 3.6工作,这应该是因为重新下载该软件包将Minizing Python版本从0.2.0更新为0.2.1

意外地找到了解决办法

我从Python3.7降级到3.6,现在它也可以在windows中工作

相关问题 更多 >

    热门问题