问题
So, I'm trying to use oct2py on Windows, like so:
from oct2py import octave
That's literally the only code I need to reproduce the error.
When I execute this, I get OSError: Octave Executable not found, please add to path or set"OCTAVE_EXECUTABLE" environment variable
. However, I have already set OCTAVE_EXECUTABLE
as a system variable, which points to "C:\Octave\Octave-4.4.1\bin\octave-cli-4.4.1.exe"
. Opening up the command line and running %OCTAVE_EXECUTABLE%
gives me the Octave CLI, so I know it's right.
I've tried rebooting. I've also tried adding the Octave folder to my Path and removing OCTAVE_EXECUTABLE
. Neither work.
EDIT: I've also tried using just octave-cli.exe
, and I've tried doing print(os.environ['OCTAVE_EXECUTABLE'])
, which returns the expected path.
Any ideas here?
回答1:
In spite of what you mention in your comment:
It appears that, somewhere along the line, octave.exe got replaced with octave-cli.exe. There is no longer an octave.exe distributed with the Octave package. Others have successfully pointed OCTAVE_EXECUTABLE at octave-cli.exe
Recently more people had a similar issue and the oct2py
developers fixed it in the 5.0.0
version some hours ago. Actually they said:
Ah, I see what the issue is here. The convenience
octave
instance is created before you get a chance to set theexecutable
property. Given that fact, I think the only right answer is to remove the executable argument in favor of usingPATH
or theOCTAVE_EXECUTABLE
environment variable.
Anyway I had to adapt my code to make it work updating the environment variable OCTAVE_EXECUTABLE
:
import shutil
import os
import sys
if sys.platform == 'win32':
# os.environ['OCTAVE_EXECUTABLE'] = shutil.which('octave')
# >> I had to replace this with this other line >>
os.environ['OCTAVE_EXECUTABLE'] = shutil.which('octave-cli.exe')
回答2:
There's two executables, octave-cli.exe and octave-cli-4.4.1.exe. What if you try the one without the version number? I only needed to restart the Spyder IDE for it to work
回答3:
The documentation (http://blink1073.github.io/oct2py/source/installation.html) mentions oct2py may in fact be tryin to find a file called octave.exe, not octave-cli.exe
Try modifying your OCTAVE_EXECUTABLE to point to that instead. Though, in theory, if octave.exe and octave-cli.exe both sit in the same directory, adding to path should have worked ... but try anyway!
回答4:
Not sure if this will help so long after the OP, but here is what worked for me:
- Download Octave as a .7z file and unzip it to hard disk
- Run post-install.bat (from the folder entitled octave-5.2.0-w64 or something similar)
- Restart Windows 10 machine (due to messages encountered during run of post-install.bat)
- Run octave-firsttime.vbs
- Quit the Octave program
- Execute the following python code (in 3.7.6)
import os
pathToExecutable = (
'D:\\wherever\\you\\put\\this\\octave-cli.exe'
)
os.environ['OCTAVE_EXECUTABLE'] = pathToExecutable
from oct2py import octave
I was running into a problem because, first of all, I failed to comprehend that I needed to install an Octave interpreter (I thought oct2py
came with one) and then since I am not an administrator I figured I would never be able to install it, but I worked it out!
来源:https://stackoverflow.com/questions/54651597/oct2py-isnt-seeing-octave-executable-environment-variable-windows