2016-12-27 3 views
0

Я использую os x 10.11, anaconda 1.3.1, python 3.5, glpk 4.60, pyomo 5.0.1, spyder 3.0.2. Если я запустить сумы, который использует pyomo для вызова GLPK я получаю следующее предупреждение и сообщение об ошибке:Spyder не находит glpsol

WARNING:pyomo.solvers:Could not locate the 'glpsol' executable, which is required for solver 'glpk' 
ApplicationError: No executable found for solver 'glpk' 

Если я запустить тот же сценарий через терминал или jupyter ноутбук он работает без проблем.

Я установил GLPK с помощью:

conda install -c conda-forge glpk=4.60 

Как я получить GLPK работает в Spyder environement?

Если я бегу

which glpsol 

я получить

/Users/myusername/anaconda/bin/glpsol 

но добавление в каталог в менеджере PYTHONPATH в Spyder ничего не меняет.

Любая помощь очень ценится. Спасибо

+0

Пожалуйста, запустите Spyder с терминала и повторите попытку. Это может помочь. –

+0

Спасибо, что помогли и решили мою проблему! –

ответ

1

Интерфейс GLPK от Pyomo работает, запустив glpsol как отдельный процесс. Он находит исполняемый файл glpsol, выполнив поиск переменной окружения PATH. Вы должны убедиться, что путь к glpsol (в вашем случае /Users/myusername/anaconda/bin/) находится в переменной окружения PATH для среды spyder. Вы можете сделать это несколькими способами:

  • [Windows только] можно редактировать с помощью этого Tools - Current user environment variables в Spyder IDE.
  • [Windows только] вы можете установить PATH вашего пользователя в Windows (маршрут к опции меняется от версии к версии, например, см Windows 7 или Windows 8.1.
  • [Unix/Linux/MacOS] вы можете изменить оболочку инициализации (например, ~/.bashrc для BASH, ~/.cshrc для CSH/Tcsh), чтобы установить переменную PATH среды там.
  • [внутри Spyder] можно указать либо пару строк кода питона или небольшой скрипт, который добавляет каталог к Консоль IPython PATH через настройки spyder (Tools - Preferences - IPython console - Startup вкладка Yo у хотел бы что-то вроде:

    import os 
    os.environ['PATH'] = os.pathsep.join((os.environ['PATH'], '/Users/myusername/anaconda/bin/')) 
    

Примечание: PATH и PYTHONPATH не то же самое: PATH это пути поиска исполняемых файлов. PYTHONPATH - это путь поиска, который использует Python для поиска импортируемых модулей.

+0

Это предложение не работает для меня, если я запустил spyder из навигатора anaconda. Но это, похоже, проблема самого навигатора. Если я запустил spyder из терминала (как предложил Карлос в комментарии), переменная PATH, похоже, имеет путь к glpsol. –