CAChemE / pyomo-recipes

Useful conda recipes for Pyomo and dependencies.
MIT License
6 stars 2 forks source link

Pyomo en Windows10 ¿error encode? #17

Closed MichaelM73 closed 7 years ago

MichaelM73 commented 7 years ago

Hola Juanlu,

Vuelvo a tener el mismo problema que te comenté hace unos meses. He instalado Pyomo en Windows10. Mi problema es que al optimizar un programita (que sé que tiene solución óptima porque en otro orde funciona correctamente) me encuentro con que:

Solver log file: 'C:\Users\MC\AppData\Local\Temp\tmpf9gmk_cs_ipopt.log'
Solver solution file: 'C:\Users\MC\AppData\Local\Temp\tmpm1p5q1iq.pyomo.sol'
Solver problem files: ('C:\\Users\\MC\\AppData\\Local\\Temp\\tmpm1p5q1iq.pyomo.nl',)
Exception in thread Thread-6:
Traceback (most recent call last):
  File "C:\Users\MC\Anaconda3\lib\threading.py", line 914, in _bootstrap_inner
    self.run()
  File "C:\Users\MC\Anaconda3\lib\threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\MC\Anaconda3\lib\site-packages\pyutilib\subprocess\processmngr.py", line 292, in _merged_reader
    encoding = sys.__stdout__.encoding
AttributeError: 'NoneType' object has no attribute 'encoding'

Y a la vez se me abre un cmd completamente negro: C:\Users\MC\Anaconda3\Library\bin\ipopt.exe

Al cerrar esta ventana de ipopt en la consola de ipython me sale:

  Signal handler called from  C:\Users\MC\Anaconda3\lib\subprocess.py wait 1271
  Waiting...
Traceback (most recent call last):

  File "<ipython-input-1-0aa7944467fe>", line 1, in <module>
    runfile('C:/Users/MC/program.py', wdir='C:/Users/MC/program.py')

  File "C:\Users\MC\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
    execfile(filename, namespace)

  File "C:\Users\MC\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/MC/program.py", line 640, in <module>
    results = solver_manager.solve(m, opt=opt, tee=True, keepfiles=True, symbolic_solver_labels=True)

  File "C:\Users\MC\Anaconda3\lib\site-packages\pyomo\opt\parallel\async_solver.py", line 33, in solve
    return self.execute(*args, **kwds)

  File "C:\Users\MC\Anaconda3\lib\site-packages\pyomo\opt\parallel\manager.py", line 106, in execute
    ah = self.queue(*args, **kwds)

  File "C:\Users\MC\Anaconda3\lib\site-packages\pyomo\opt\parallel\manager.py", line 121, in queue
    return self._perform_queue(ah, *args, **kwds)

  File "C:\Users\MC\Anaconda3\lib\site-packages\pyomo\opt\parallel\local.py", line 58, in _perform_queue
    results = opt.solve(*args, **kwds)

  File "C:\Users\MC\Anaconda3\lib\site-packages\pyomo\opt\base\solvers.py", line 588, in solve
    _status = self._apply_solver()

  File "C:\Users\MC\Anaconda3\lib\site-packages\pyomo\opt\solver\shellcmd.py", line 241, in _apply_solver
    self._rc, self._log = self._execute_command(self._command)

  File "C:\Users\MC\Anaconda3\lib\site-packages\pyomo\opt\solver\shellcmd.py", line 304, in _execute_command
    tee   = self._tee

  File "C:\Users\MC\Anaconda3\lib\site-packages\pyutilib\subprocess\processmngr.py", line 644, in run_command
    (' '.join(_cmd), err))

ApplicationError: Could not execute the command: 'C:\Users\MC\Anaconda3\Library\bin\ipopt.exe -s C:\Users\MC\AppData\Local\Temp\tmpm1p5q1iq.pyomo.nl halt_on_ampl_error=yes max_iter=3000'
    Error message: Interrupted by signal 2

Muchas gracias,

Un saludo, María

astrojuanlu commented 7 years ago

Hola María:

Acabo de buscar tu problema en Internet y he encontrado esto:

https://groups.google.com/d/msg/pyomo-forum/q_IsmgT6YHA/jle7CZZoGgAJ

Parece que debe de ser un problema con Spyder, y además es parecido al otro problema que ya reportaste:

https://github.com/CAChemE/pyomo-recipes/issues/16

¿Puedes hacer un conda info -a y también decir qué versión de Spyder tienes?

No sé si @ccordoba12 nos podría echar una mano con esto :) Nos hará falta más información para averiguar cuál es el problema.

MichaelM73 commented 7 years ago

Haciendo conda info -a, tenemos esto:

Current conda install:

               platform : win-64
          conda version : 4.3.14
       conda is private : False
      conda-env version : 4.3.14
    conda-build version : not installed
         python version : 3.5.1.final.0
       requests version : 2.13.0
       root environment : C:\Users\MC\Anaconda3  (writable)
    default environment : C:\Users\MC\Anaconda3
       envs directories : C:\Users\MC\Anaconda3\envs
                          C:\Users\MC\AppData\Local\conda\conda\envs
                          C:\Users\MC\.conda\envs
          package cache : C:\Users\MC\Anaconda3\pkgs
                          C:\Users\MC\AppData\Local\conda\conda\pkgs
           channel URLs : https://conda.anaconda.org/anaconda-fusion/win-64
                          https://conda.anaconda.org/anaconda-fusion/noarch
                          https://repo.continuum.io/pkgs/free/win-64
                          https://repo.continuum.io/pkgs/free/noarch
                          https://repo.continuum.io/pkgs/r/win-64
                          https://repo.continuum.io/pkgs/r/noarch
                          https://repo.continuum.io/pkgs/pro/win-64
                          https://repo.continuum.io/pkgs/pro/noarch
                          https://repo.continuum.io/pkgs/msys2/win-64
                          https://repo.continuum.io/pkgs/msys2/noarch
            config file : C:\Users\MC\.condarc
           offline mode : False
             user-agent : conda/4.3.14 requests/2.13.0 CPython/3.5.1 Windows/10 Windows/10.0.14393

# conda environments:
#
root                  *  C:\Users\MC\Anaconda3

sys.version: 3.5.1 |Anaconda custom (64-bit)| (defaul...
sys.prefix: C:\Users\MC\Anaconda3
sys.executable: C:\Users\MC\Anaconda3\python.exe
conda location: C:\Users\MC\Anaconda3\lib\site-packages\conda
conda-build: None
conda-env: C:\Users\MC\Anaconda3\Scripts\conda-env.exe
conda-server: C:\Users\MC\Anaconda3\Scripts\conda-server.exe
user site dirs:

CIO_TEST: <not set>
CONDA_DEFAULT_ENV: <not set>
CONDA_ENVS_PATH: <not set>
PATH: C:\Users\MC\Anaconda3\Library\bin;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\;C:\Users\MC\Anaconda3;C:\Users\MC\Anaconda3\Scripts;C:\Users\MC\Anaconda3\Library\bin;C:\Users\MC\AppData\Local\Microsoft\WindowsApps
PYTHONHOME: <not set>
PYTHONPATH: <not set>

License directories:
    C:\Users\MC\.continuum
    C:\Users\MC\Anaconda3\licenses
    C:\Users\MC\AppData\Roaming\Continuum
License files (license*.txt):
Package/feature end dates:

C:\WINDOWS\system32>

No sé leer lo que sale, ¿está todo bien?

Y mi versión de spyder es 3.1.3.

Gracias por tu ayuda! Un saludo

ccordoba12 commented 7 years ago

Si, todo parece estar en orden.

Hola María, que pasa si en tu código (antes de correr nada de pyomo) incluyes este par de líneas

import sys
sys.setdefaultencoding(‘utf-8’)

y lo corres de nuevo?

MichaelM73 commented 7 years ago

Hola! Me salta el siguiente error:

AttributeError: module 'sys' has no attribute 'setdefaultencoding'

Parece ser que es por estar usando Python 3... :(

MichaelM73 commented 7 years ago

Ninguna idea...? :(

astrojuanlu commented 7 years ago

Por mi parte no :( Parece un problema específico de Spyder y nunca lo uso, y ni siquiera tengo una máquina con Windows 10 para intentar probar, así que no puedo aportar nada más. Mientras se nos ocurre qué hacer, puedes probar otro editor:

https://www.jetbrains.com/pycharm/download/

MichaelM73 commented 7 years ago

Acabo de descubrir que hay ciertos programas (también resueltos con pyomo, solver ipopt) que funcionan perfectamente desde spyder, pero los otros siguen dando el mismo error. ¿Esto da alguna pista?

Gracias @Juanlu001 lo miraré, el problema es que tengo 3 ordenadores distintos, y en los otros 2 me funciona spyder perfectamente, y ya me había acostumbrado...

ccordoba12 commented 7 years ago

Del mensaje de error que publicó María, para mí es claro que el problema no está en Spyder, sino más bien en pyutilib.

María, por favor abre el archivo C:\Users\MC\Anaconda3\lib\site-packages\pyutilib\subprocess\processmngr.py en un editor de texto (puede ser el mismo Spyder), ve a la línea 292, y cambia su código de

encoding = sys.__stdout__.encoding

por esto

try:
    encoding = sys.__stdout__.encoding
except AttributeError:
    encoding = None

Eso debería resolver tu error.

ccordoba12 commented 7 years ago

Prueba esta solución y nos cuentas. Si te funciona, yo puedo crear una pull request en pyutilib con la misma.

ccordoba12 commented 7 years ago

Esta issue menciona que sys.__stdout__ puede ser None en ciertas ocasiones (que para mí es la fuente del problema en este caso):

https://github.com/pypa/pip/issues/3356

Lo dejo aquí sólo como referencia :-)

astrojuanlu commented 7 years ago

...Y aparece desde Idle, así que todo cuadra :) ¡Gracias por comprobarlo! Con lo que has dicho estoy casi seguro de que se resolverá.

On 28 Mar 2017 17:05, "Carlos Cordoba" notifications@github.com wrote:

Esta issue menciona que sys.stdout puede ser None en ciertas ocasiones (que para mí es la fuente del problema en este caso):

pypa/pip#3356 https://github.com/pypa/pip/issues/3356

Lo dejo aquí sólo como referencia :-)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/CAChemE/pyomo-recipes/issues/17#issuecomment-289799969, or mute the thread https://github.com/notifications/unsubscribe-auth/AATUZfx_XWQGUa3-CpSLF4_y_HJ3ewQ6ks5rqSGigaJpZM4MqMSH .

MichaelM73 commented 7 years ago

Hola chicos @ccordoba12 @Juanlu001 , Efectivamente, sois muy cracks. He reemplazado lo que me has dicho y funciona perfectamente! Mil gracias, en serio!

astrojuanlu commented 7 years ago

@ccordoba12 Si no les escribes tú en https://github.com/PyUtilib/pyutilib/issues esta semana o la otra les escribo yo :)

ccordoba12 commented 7 years ago

@Juanlu001, yo creo que deberíamos ir por la pull request de una vez. El error y la solución son bastante claros para mí :-)

Qué dices?

astrojuanlu commented 7 years ago

Totalmente! Por eso te preguntaba, esta semana no puedo pero en unos días sí. Si la abres tú hazme ping :)

On 29 Mar 2017 14:12, "Carlos Cordoba" notifications@github.com wrote:

@Juanlu001 https://github.com/Juanlu001, yo creo que deberíamos ir por la pull request de una vez. El error y la solución son bastante claros para mí :-)

Qué dices?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/CAChemE/pyomo-recipes/issues/17#issuecomment-290070770, or mute the thread https://github.com/notifications/unsubscribe-auth/AATUZdtcnCISenh1FlrfaPGXx5wAVpSFks5rqkqjgaJpZM4MqMSH .

ccordoba12 commented 7 years ago

Crea tú la PR por favor, si? La otra semana está bien para mí :-)

Yo también estoy bien ocupado con otras cosas.