Donc, j'essaye d'utiliser oct2py sous Windows, comme ceci:
from oct2py import octave
C'est littéralement le seul code dont j'ai besoin pour reproduire l'erreur.
Quand je exécutez ceci, j'obtiens OSError: Octave Executable not found, veuillez ajouter au chemin ou définir la variable d'environnement "OCTAVE_EXECUTABLE"
. Cependant, j'ai déjà défini OCTAVE_EXECUTABLE
comme variable système, qui pointe vers "C: \ Octave \ Octave-4.4.1 \ bin \ octave-cli- 4.4.1.exe "
. Ouvrir la ligne de commande et exécuter % OCTAVE_EXECUTABLE%
me donne la CLI Octave, donc je sais que c'est vrai.
J'ai essayé de redémarrer. J'ai également essayé d'ajouter le dossier Octave à mon chemin et de supprimer OCTAVE_EXECUTABLE
. Ni l'un ni l'autre.
EDIT: J'ai aussi essayé d'utiliser simplement octave-cli.exe
, et j'ai essayé de faire print (os.environ ['OCTAVE_EXECUTABLE' ' ])
, qui renvoie le chemin attendu.
Des idées ici?
4 Réponses :
Il existe deux exécutables, octave-cli.exe et octave-cli-4.4.1.exe. Et si vous essayez celui sans le numéro de version? Je n'avais besoin que de redémarrer Spyder IDE pour que cela fonctionne
Merci pour la suggestion ... J'ai en fait essayé les deux, sans succès.
@JohnChrysostom qu'en est-il de l'octave.exe au lieu d'octave-cli?
La documentation ( http://blink1073.github.io/oct2py/source/ installation.html ) mentionne oct2py peut en fait essayer de trouver un fichier appelé octave.exe, pas octave-cli.exe
Essayez de modifier votre OCTAVE_EXECUTABLE pour qu'il pointe vers cela à la place. Cependant, en théorie, si octave.exe et octave-cli.exe se trouvent tous les deux dans le même répertoire, l'ajout au chemin aurait dû fonctionner ... mais essayez quand même!
Il semble que, quelque part le long de la ligne, octave.exe a été remplacé par octave-cli.exe. Il n'y a plus d'octave.exe distribué avec le paquet Octave. D'autres ont pointé avec succès OCTAVE_EXECUTABLE sur octave-cli.exe. Merci quand même.
@JohnChrysostom vaut peut-être encore la peine d'essayer de créer un lien symbolique (ou de renommer) d'octave-cli.exe en octave.exe. (PS. Grand honneur, votre éminence. Grand fan de la liturgie: p)
Malgré ce que vous mentionnez dans votre commentaire:
Il semble que, quelque part le long de la ligne, octave.exe a été remplacé par octave-cli.exe. Il n'y a plus d'octave.exe distribué avec le paquet Octave. D'autres ont pointé avec succès OCTAVE_EXECUTABLE sur octave-cli.exe
Récemment, de plus en plus de personnes ont eu un problème similaire et les développeurs de oct2py
l'ont corrigé dans la version 5.0.0
il y a quelques heures. En fait, ils ont dit :
Ah, je vois quel est le problème ici. L'instance de commodité
octave
est créée avant que vous n'ayez la possibilité de définir la propriétéexecutable
. Compte tenu de ce fait, je pense que la seule bonne réponse est de supprimer l'argument exécutable en faveur de l'utilisation dePATH
ou de la variable d'environnementOCTAVE_EXECUTABLE
.
De toute façon, j'ai dû adapter mon code pour le faire fonctionner en mettant à jour la variable d'environnement 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')
Je ne sais pas si cela aidera si longtemps après l'OP, mais voici ce qui a fonctionné pour moi:
import os pathToExecutable = ( 'D:\\wherever\\you\\put\\this\\octave-cli.exe' ) os.environ['OCTAVE_EXECUTABLE'] = pathToExecutable from oct2py import octave
Je rencontrais un problème car, tout d'abord, je n'avais pas compris que j'avais besoin d'installer un interpréteur Octave (je pensais oct2py
est venu avec un) et comme je ne suis pas administrateur, j'ai pensé que je ne pourrais jamais l'installer, mais je l'ai résolu!
Donc, je commence juste à utiliser Octave, pour la première fois ... l'étape 5 ci-dessus n'est peut-être pas nécessaire. Tout ce que je sais, c'est que cela ne cause certainement pas d'erreur avec l'instruction d'importation; J'ai pensé que cela pourrait causer des problèmes si Python et GNU Octave appelaient tous les deux l'interpréteur en même temps, mais là encore, peut-être que ce ne serait pas le cas!