oct2py не видит переменную среды OCTAVE_EXECUTABLE (Windows)
Итак, я пытаюсь использовать oct2py в Windows, вот так:
from oct2py import octave
Это буквально единственный код, который мне нужен для воспроизведения ошибки.
Когда я выполняю это, я получаю 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 в мой путь и удалить OCTAVE_EXECUTABLE
, Ни одна из них не работает.
РЕДАКТИРОВАТЬ: я также пытался использовать только octave-cli.exe
и я попытался сделать print(os.environ['OCTAVE_EXECUTABLE'])
, который возвращает ожидаемый путь.
Есть идеи здесь?
5 ответов
Несмотря на то, что вы упоминаете в своем комментарии:
Похоже, что где-то вдоль, octave.exe был заменен на octave-cli.exe. Больше нет octave.exe, распространяемого вместе с пакетом Octave. Другие успешно указали OCTAVE_EXECUTABLE на octave-cli.exe
В последнее время больше людей имели похожую проблему, и oct2py
разработчики исправили это в 5.0.0
версия несколько часов назад. На самом деле они сказали:
Ах, я вижу, в чем проблема здесь. Удобство
octave
экземпляр создается, прежде чем вы получите возможность установитьexecutable
имущество. Учитывая этот факт, я думаю, что единственный правильный ответ - убрать исполняемый аргумент в пользу использованияPATH
илиOCTAVE_EXECUTABLE
переменная окружения.
В любом случае мне пришлось адаптировать свой код, чтобы он работал, обновляя переменную среды 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')
Есть два исполняемых файла: octave-cli.exe и octave-cli-4.4.1.exe. Что делать, если вы попробуете тот, у которого нет номера версии? Мне нужно было только перезапустить Spyder IDE, чтобы он заработал
В документации ( http://blink1073.github.io/oct2py/source/installation.html) упоминается, что oct2py может фактически попытаться найти файл с именем octave.exe, а не octave-cli.exe
Попробуйте изменить ваш OCTAVE_EXECUTABLE, чтобы указать на это. Хотя, теоретически, если octave.exe и octave-cli.exe находятся в одном каталоге, добавление к пути должно сработать... но попробуйте в любом случае!
Не уверен, что это поможет так долго после OP, но вот что сработало для меня:
- Загрузите Octave как файл.7z и распакуйте его на жесткий диск
- Запустите post-install.bat (из папки octave-5.2.0-w64 или чего-то подобного)
- Перезагрузите компьютер с Windows 10 (из-за сообщений, обнаруженных во время запуска post-install.bat)
- Запустите octave-firsttime.vbs
- Выйти из программы Octave
- Выполните следующий код Python (в 3.7.6)
import os
pathToExecutable = (
'D:\\wherever\\you\\put\\this\\octave-cli.exe'
)
os.environ['OCTAVE_EXECUTABLE'] = pathToExecutable
from oct2py import octave
Я столкнулся с проблемой, потому что, во-первых, я не мог понять, что мне нужно установить интерпретатор Octave (я думал oct2py
пришел с одним), а затем, поскольку я не являюсь администратором, я подумал, что никогда не смогу его установить, но я решил это!
Используя Windows 10 и локальную пользовательскую установку Octave 6.2.0, создайте новую переменную пользовательской среды:
OCTAVE_EXECUTABLE
и установите:%LOCALAPPDATA% \ Programs \ GNU Octave \ Octave-6.2.0 \ mingw64 \ bin \ octave-cli.exe
работал у меня. Мне для этого не понадобились права админа.