我想在 python 中安装 oct2py。我正在使用 Windows 8.1
我使用了命令 easy_install oct2py 并使用标准 exe 文件安装了八度音程。现在根据 安装指南,我应该添加八度音程路径。
setx PATH "%PATH%;<path-to-octave-bin-dir>
Run Code Online (Sandbox Code Playgroud)
我不明白这个命令。我试图将octave.exe文件所在的路径添加到环境变量中。
但是当我尝试导入 oct2py 时出现错误。
>>> import oct2py
Please install GNU Octave and put it in your path
>>>
Run Code Online (Sandbox Code Playgroud)
任何人都可以请解释我究竟如何设置路径?
我应该在终端上运行的命令示例非常有用。谢谢
编辑:我试过了
setx PATH "%PATH%;C:\Software\Octave-3.6.4\bin"
Run Code Online (Sandbox Code Playgroud)
但我收到一条奇怪的消息:
WARNINGS: The data being saved is truncated to 1024 characters
SUCCESS: Specified value was saved
Run Code Online (Sandbox Code Playgroud) 最终编辑:添加
export PATH=/usr/local/octave/3.8.0/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
到我的路径确实足以使 oct2py 正常工作(只要我在更改后重新启动终端)。哈扎!
---- 原帖----
我已经成功地 pip 安装了 oct2py 和 pexpect,但是在尝试导入和使用 oct2py 时遇到了问题。首先,在尝试以下操作时:
import oct2py
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
Please install GNU Octave and put it in your path
Run Code Online (Sandbox Code Playgroud)
所以我将以下行添加到 ~/usr/.bash_profile
export PATH=/usr/local/octave-3.8.0/bin:${PATH}
export PATH=/usr/local/octave-3.8.0/sbin:${PATH}
Run Code Online (Sandbox Code Playgroud)
现在我可以在 python 中成功导入 oct2py 模块。但是,当尝试使用以下方法对其进行初始化时:
oc = oct2py.Oct2Py()
Run Code Online (Sandbox Code Playgroud)
我收到与以前相同的错误消息。我还需要在 PATH 中添加什么来告诉 python 如何实际运行 Octave?也许还有另一个我不知道的问题?
编辑:看来最初的“import oct2py”仍然无法识别路径,但是如果我第二次运行该行,它不会再次引发相同的错误消息。所以大概我已经添加的 PATH 行实际上并没有做任何事情。
我正在使用Oct2Py在我的Python代码中使用一些M文件.假设我有这个简单的Matlab函数:
function [a, b] = toto(c);
a = c;
b = c + 1;
end
Run Code Online (Sandbox Code Playgroud)
如果我在Octave中调用它会发生什么:
>> [x,y] = toto(3)
x = 3
y = 4
Run Code Online (Sandbox Code Playgroud)
现在如果我用Python调用它,使用oct2py:
from oct2py import octave
my_dir = "D:\\My_Dir"
octave.addpath(my_dir)
a,b = octave.toto(3)
Run Code Online (Sandbox Code Playgroud)
返回:
TypeError:'int'对象不可迭代
似乎octave.toto(n)只返回第一个值,当我期待两个......有人可以向我解释我应该做什么吗?谢谢
所以,我试图在 Windows 上使用 oct2py,如下所示:
from oct2py import octave
Run Code Online (Sandbox Code Playgroud)
这实际上是我重现错误所需的唯一代码。
当我执行这个时,我得到OSError: Octave Executable not found, please add to path or set"OCTAVE_EXECUTABLE" environment variable. 不过,我也已经设置OCTAVE_EXECUTABLE为系统变量,它指向"C:\Octave\Octave-4.4.1\bin\octave-cli-4.4.1.exe"。打开命令行并运行%OCTAVE_EXECUTABLE% 给了我 Octave CLI,所以我知道它是对的。
我试过重启。我还尝试将 Octave 文件夹添加到我的 Path 并删除OCTAVE_EXECUTABLE. 都不工作。
编辑:我也试过使用 just octave-cli.exe,我试过做print(os.environ['OCTAVE_EXECUTABLE']),它返回预期的路径。
这里有什么想法吗?
我试图使用两个线程从python程序调用Octave函数.我的八度代码只是为了看它是如何工作的 -
testOctave.m
function y = testOctave(i)
y = i;
end
Run Code Online (Sandbox Code Playgroud)
而python程序只是试图调用它
from oct2py import octave
import thread
def func(threadName,i) :
print "hello",threadName // This printf works
y = octave.testOctave(i)
print y // This is ignored
print 'done' // This is ignored
print 'exiting' // This is ignored
try:
thread.start_new_thread( func, ("Thread-1", 100 ) )
thread.start_new_thread( func, ("Thread-2", 150 ) )
except:
print "Error: unable to start thread"
Run Code Online (Sandbox Code Playgroud)
程序退出时不会出现任何错误,但在上面的函数中,只执行第一次打印,两个线程都会忽略八度调用之后的所有打印.是否有这种情况发生的原因,我该怎么做才能使它发挥作用?
该程序没有做任何特别的事情,我只想弄清楚如何使用oct2py