1

我知道这个问题已经被多次问过并在不同的论坛上得到了回答,但看起来这个问题有很多变体,而我的可能略有不同。

让我解释。我正在尝试调用我为绘图而编写的八度函数,并且我不想再次重写它 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],...) 渲染了绘图。我将不胜感激这里的任何帮助?

4

0 回答 0