我知道这个问题已经被多次问过并在不同的论坛上得到了回答,但看起来这个问题有很多变体,而我的可能略有不同。
让我解释。我正在尝试调用我为绘图而编写的八度函数,并且我不想再次重写它 python。因此我做了以下操作:- 1. 安装 oct2py 2. 设置 OCTAVE_EXECUTABLE= c:\Octave\Octave-4.2.1\bin\octave-gui.exe 3. 在代码中执行以下操作:-
#importing oct2py
from oct2py import octave as oc
oc.addpath("C:\\personal\\learning\\octave-lib") #containing my octave .m files
#Now I am trying to call a plot function written in octave called displayData.m
oc.displayData(X) # where X is a numpy matrix for plotting
但是,在执行对该方法的调用时不会出现任何错误 - 但它什么也不做。我看到一个 Windows shell 提示打开和关闭,但没有别的。
根据某些网站的建议,我还尝试将 octave-gui-4.2.1.exe 替换为 octave-cli-4.2.1.exe,但我收到的错误是找不到所需的大部分 windows dll。我从 oct2py 站点的建议开始,要求我只添加包含 octave.exe 的文件夹的路径(请注意,此文件夹包含所有 octave 可执行文件),但这导致了 Windows 权限错误。这个错误应该没有任何原因,因为我是我的 Windows 笔记本电脑上的唯一用户并且拥有管理权限。我收到以下错误:-
File "mcclassifier.py", line 21, in <module>
from oct2py import octave as oc
File "C:\Users\Sam\Anaconda3\lib\site-packages\oct2py\__init__.py", line
38, in <module>
octave = Oct2Py()
File "C:\Users\Sam\Anaconda3\lib\site-packages\oct2py\core.py", line 73,
in __init__self.restart()
File "C:\Users\Sam\Anaconda3\lib\site-packages\oct2py\core.py", line 508, in restart logger=self.logger)
File "C:\Users\Sam\Anaconda3\lib\site-packages\octave_kernel\kernel.py",
line 144, in __init__
self.repl = self._create_repl()
File "C:\Users\Sam\Anaconda3\lib\site-packages\octave_kernel\kernel.py",
line 338, in _create_repl
version = subprocess.check_output(version_cmd).decode('utf-8')
File "C:\Users\Sam\Anaconda3\lib\subprocess.py", line 336, in check_output
**kwargs).stdout
File "C:\Users\Sam\Anaconda3\lib\subprocess.py", line 403, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Users\Sam\Anaconda3\lib\subprocess.py", line 707, in __init__
restore_signals, start_new_session)
File "C:\Users\Sam\Anaconda3\lib\subprocess.py", line 990, in
_execute_child startupinfo)
PermissionError: [WinError 5] Access is denied
我尝试从 Spyder IDE 和命令行运行它。两者具有相同的行为。它令人沮丧,所以任何让我解决这个问题的建议都会有很大帮助!
附加信息:- 可能我上面不是很清楚,但我想做的是执行一个我在八度音阶中实现的绘图功能,并且正在工作。
我对我的 python 代码进行了一些更改,以查看是否可以实例化 Oct2Py 类,然后调用 feval 函数。我注释了上面的前几行代码并添加了以下内容:-
octave=oct2py.Oct2Py()
octave.feval('C:\\personal\\learning\\octave-lib\displayData',Xmat,timeout=80)
我可以从 Windows 任务栏看到 octave-gui.exe 被调用并被视为在后台运行。但它仍然没有绘图,也没有错误。
如何让它作为前台进程运行并渲染情节。我想要做的类似于 oct2py 演示示例中显示的内容:- http://blink1073.github.io/oct2py/source/demo.html。如您所见, oc.plot([1,2,3],...) 渲染了绘图。我将不胜感激这里的任何帮助?