在使用本机python接口时,我试图通过python调用MiniZinc。
该接口是working,在Ubuntu下,但不在Win10中。
我正在使用的代码如下所示,可在MiniZinc 一个基本的例子的官方网站上找到
我已经创建了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"])

发布于 2020-01-13 22:49:57
这个问题是由于对asyncio库的支持有限造成的。直到Python3.8,默认事件循环才支持MiniZinc Python库使用的功能。这个问题在MiniZinc Python问题解决程序(https://gitlab.com/minizinc/minizinc-python/issues/14)上有报道,并在不久之后得到了修复。
昨天是MiniZinc Python0.2.1版本的新版本发布的日子,该版本包括了这个修复程序和一些小的更改。它现在使用Python3.6应该是因为重新下载包将MiniZinc Python版本从0.2.0更新到0.2.1。
发布于 2020-01-13 15:12:37
偶然找到了解决方案。
我把python的等级从3.7降到3.6,现在它也在windows上工作.
https://stackoverflow.com/questions/59705146
复制相似问题