我试图在使用本机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"])
这个问题是由于对
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中工作
相关问题 更多 >
编程相关推荐