Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

There is no executable for IPOPT >= 3.13 on Windows #55

Open
artem-math opened this issue Nov 27, 2020 · 16 comments
Open

There is no executable for IPOPT >= 3.13 on Windows #55

artem-math opened this issue Nov 27, 2020 · 16 comments

Comments

@artem-math
Copy link

artem-math commented Nov 27, 2020

Issue:
After installation of the latest version of IPOPT using
conda install -c conda-forge ipopt
I can not run IPOPT. Namely, I either get an error directly from Pyomo that the executable is not found, or by typing in terminal
ipopt -v
'ipopt' is not recognized as an internal or external command,
operable program or batch file.
The previous version was v3.11.1 and works correctly, the latest version v3.13.3 does not work since command ipopt is not found. There are two unanswered threads on stackoverflow in the last 8 days on this problem, this is exactly when the new version was released.
I really need the latest version, please, help. Thank you!


Environment (conda list):

$ conda list

# Name                    Version                   Build  Channel
appdirs                   1.4.3                      py_1    conda-forge
backcall                  0.2.0                      py_0
blas                      1.0                         mkl
ca-certificates           2020.11.8            h5b45459_0    conda-forge
certifi                   2020.11.8        py37h03978a9_0    conda-forge
colorama                  0.4.3                      py_0
cycler                    0.10.0                   py37_0
decorator                 4.4.2                      py_0
freetype                  2.10.2               hd328e21_0
icc_rt                    2019.0.0             h0cc432a_1
icu                       58.1                     vc14_0  [vc14]  conda-forge/label/cf202003
intel-openmp              2020.1                      216
ipopt                     3.13.3               hf6be2e5_4    conda-forge
ipython                   7.16.1           py37h5ca1d4c_0
ipython_genutils          0.2.0                    py37_0
jedi                      0.17.1                   py37_0
jpeg                      9c                hfa6e2cd_1001    conda-forge/label/cf202003
kiwisolver                1.2.0            py37h74a9793_0
libblas                   3.8.0                    16_mkl    conda-forge
libflang                  5.0.0           h6538335_20180525    conda-forge
liblapack                 3.8.0                    16_mkl    conda-forge
libpng                    1.6.37               h2a8f88b_0
llvm-meta                 5.0.0                         0    conda-forge
matplotlib                3.2.2                         0
matplotlib-base           3.2.2            py37h64f37c6_0
metis                     5.1.0             h0e60522_1006    conda-forge
mkl                       2020.1                      216
mkl-service               2.3.0            py37hb782905_0
mkl_fft                   1.1.0            py37h45dec08_0
mkl_random                1.1.1            py37h47e9c7a_0
mumps-seq                 5.2.1               hb3f9cae_10    conda-forge
nose                      1.3.7           py37hc8dfbb8_1004    conda-forge
numpy                     1.19.1           py37h5510c5b_0
numpy-base                1.19.1           py37ha3acd2a_0
openmp                    5.0.0                    vc14_1    conda-forge
openssl                   1.1.1h               he774522_0    conda-forge
pandas                    1.0.5            py37h47e9c7a_0
parso                     0.7.0                      py_0
pickleshare               0.7.5                 py37_1001
pip                       20.1.1                   py37_1
ply                       3.11                       py_1    conda-forge
prompt-toolkit            3.0.5                      py_0
pygments                  2.6.1                      py_0
pyomo                     5.7              py37h1834ac0_2    conda-forge
pyparsing                 2.4.7                      py_0
pyqt                      5.9.2            py37h6538335_2
python                    3.7.6           h5b45d93_4_cpython    conda-forge/label/cf202003
python-dateutil           2.8.1                      py_0
python_abi                3.7                     1_cp37m    conda-forge
pytz                      2020.1                     py_0
pyutilib                  6.0.0              pyh9f0ad1d_0    conda-forge
qt                        5.9.7                hc6833c9_1    conda-forge/label/cf202003
scipy                     1.5.0            py37h9439919_0
setuptools                49.2.0                   py37_0
sip                       4.19.8           py37h6538335_0
six                       1.15.0                     py_0
sqlite                    3.32.3               h2a8f88b_0
tornado                   6.0.4            py37he774522_1
traitlets                 4.3.3                    py37_0
vc                        14.1                 h0510ff6_4
vs2015_runtime            14.16.27012          hf0eaf9b_3
wcwidth                   0.2.5                      py_0
wheel                     0.34.2                   py37_0
wincertstore              0.2                      py37_0
xarray                    0.16.0                     py_0
zlib                      1.2.11                   vc14_0  [vc14]  conda-forge/label/cf202003

Details about conda and system ( conda info ):
$ conda info

  conda version : 4.6.11
    conda-build version : 3.17.8
         python version : 3.7.3.final.0
       base environment : C:\ProgramData\Anaconda3  (read only)
           channel URLs : https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/win-64
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\ProgramData\Anaconda3\pkgs
                          C:\Users\b**v\.conda\pkgs
                          C:\Users\b**v\AppData\Local\conda\conda\pkgs
       envs directories : C:\Users\b**v\.conda\envs
                          C:\ProgramData\Anaconda3\envs
                          C:\Users\b**v\AppData\Local\conda\conda\envs
               platform : win-64
             user-agent : conda/4.6.11 requests/2.21.0 CPython/3.7.3 Windows/10 Windows/10.0.14393
          administrator : False
             netrc file : None
           offline mode : False
@traversaro
Copy link
Contributor

Hi @artem-math, thanks for the feedback. I am the one that updated ipopt to work on Windows, the ipopt executable is currently disabled because it depends on ampl-mp, and ampl-mp is not available on Windows at the moment (see conda-forge/ampl-mp-feedstock#13). So I guess that if you are interested in enabling the executable to compile on Windows, you should first look into enabling ampl-mp on Windows.

Having said that, I think it should be still possible to install the 3.11.1 version with conda, see https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-pkgs.html#installing-packages . I guess this should work (but I did not tried it):

conda install -c conda-forge ipopt=3.11.1

There are two unanswered threads on stackoverflow in the last 8 days on this problem, this is exactly when the new version was released.

Can you link the question on StackOverflow you were mentioning to?

@artem-math
Copy link
Author

Hi @traversaro ! Thank you for the prompt reply! Does this mean that I can not use the recent version now? I use Pyomo to compile .nl model and IPOPT to solve it. The thing is that 3.11.1 fails on my problem while the latest version works fine (tested on MacOS and Linux).

Thank you.

Here are the links:
https://stackoverflow.com/questions/64912995/applicationerror-no-executable-found-for-solver-ipopt-in-pyomo
https://stackoverflow.com/questions/64881090/unable-to-find-ipopt-exe-wheh-downloaded-using-conda-forge

@traversaro
Copy link
Contributor

traversaro commented Nov 27, 2020

Does this mean that I can not use the recent version now?

That is correct, on Windows the 3.13.3 version does not install an ipopt executable, due to the fact that ampl-mp is not available on Windows (conda-forge/ampl-mp-feedstock#13). If you are interested in having this feature, probably you can look into that yourself, I would be happy to provide help and guidance.

@traversaro
Copy link
Contributor

traversaro commented Dec 20, 2020

I tried to tackle this by adding support for compiling on Windows for the ampl-mp feedstock (conda-forge/ampl-mp-feedstock#15), but I discovered a root issue in ampl-mp ( ampl/mp#131 ) that prevented me from doing that.

@zhao12zhe
Copy link

Hi @artem-math, thanks for the feedback. I am the one that updated ipopt to work on Windows, the ipopt executable is currently disabled because it depends on ampl-mp, and ampl-mp is not available on Windows at the moment (see conda-forge/ampl-mp-feedstock#13). So I guess that if you are interested in enabling the executable to compile on Windows, you should first look into enabling ampl-mp on Windows.

Having said that, I think it should be still possible to install the 3.11.1 version with conda, see https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-pkgs.html#installing-packages . I guess this should work (but I did not tried it):

conda install -c conda-forge ipopt=3.11.1

There are two unanswered threads on stackoverflow in the last 8 days on this problem, this is exactly when the new version was released.

Can you link the question on StackOverflow you were mentioning to?

Hi Traversaro,

Thanks for your comments on my stackoverflow question, but I tried to install 3.11.1 version of ipopt that does now work. This time, it does show that

Error: Solver (ipopt) returned non-zero return code (3221225501) 
ApplicationError: Solver (ipopt) did not exit normally

instead of non-executable.

Do you have any ideas on this situation?
Great thanks in advance!

fneum added a commit to PyPSA/pypsa-eur that referenced this issue Jun 22, 2021
fneum added a commit to PyPSA/pypsa-eur that referenced this issue Jun 22, 2021
* add github action ci

* only one environment update call

* line break in echo did not work

* fix syntax

* fix version syntax

* switch to glpk

* reduce time from month to week

* list environment

* use new ipopt version
conda-forge/ipopt-feedstock#55

* remove accidental additions

* request ipopt lower than 3.13.3
conda-forge/ipopt-feedstock#64

* add badges and release notes

* add badge to readme and make ci.yaml cc-0
@traversaro traversaro changed the title There is no executable for IPOPT v3.13.3 on Windows There is no executable for IPOPT >= 3.13 on Windows Jul 2, 2021
@hbshrestha
Copy link

Hi. I am facing the same issue in Mac. I have installed ipopt 3.12.12 version using conda-forge. And I am getting the

ApplicationError: No executable found for solver 'ipopt'

Is there already a resolution in this issue?

@moorepants
Copy link
Contributor

We unlikely to patch the 3.12.12 recipe, even if the executable is missing. Is there a reason you can't use a newer version of ipopt from conda forge?

@devsure
Copy link

devsure commented Jan 21, 2022

Hi @artem-math, thanks for the feedback. I am the one that updated ipopt to work on Windows, the ipopt executable is currently disabled because it depends on ampl-mp, and ampl-mp is not available on Windows at the moment (see conda-forge/ampl-mp-feedstock#13). So I guess that if you are interested in enabling the executable to compile on Windows, you should first look into enabling ampl-mp on Windows.
Having said that, I think it should be still possible to install the 3.11.1 version with conda, see https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-pkgs.html#installing-packages . I guess this should work (but I did not tried it):

conda install -c conda-forge ipopt=3.11.1

There are two unanswered threads on stackoverflow in the last 8 days on this problem, this is exactly when the new version was released.

Can you link the question on StackOverflow you were mentioning to?

Hi Traversaro,

Thanks for your comments on my stackoverflow question, but I tried to install 3.11.1 version of ipopt that does now work. This time, it does show that

Error: Solver (ipopt) returned non-zero return code (3221225501) 
ApplicationError: Solver (ipopt) did not exit normally

instead of non-executable.

Do you have any ideas on this situation? Great thanks in advance!

Hey I'm facing same issue.....It haven't resolved pls help me

@petrasvestartas
Copy link

petrasvestartas commented Oct 30, 2024

Just include this executable and it will work, had exactly the same issue:
https://github.com/coin-or/Ipopt/releases/tag/releases%2F3.14.9

I copy pasted these files manually to check and it works:

Image

To be honest PYOMO library that we are using, should not call executables but directly run C++ code via pybind11, nanobind or any other wrapper. These executables are bit sketchy way of distributing libraries that are impossible to debug. But for now there is only one way, calling executables...

@traversaro
Copy link
Contributor

traversaro commented Oct 30, 2024

I tried to tackle this by adding support for compiling on Windows for the ampl-mp feedstock (conda-forge/ampl-mp-feedstock#15), but I discovered a root issue in ampl-mp ( ampl/mp#131 ) that prevented me from doing that.

A bit of update on this:

In both cases, a prerequisite I think is to solve the licensing confusion regarding ASL see ampl/asl#7 (comment) .

@traversaro
Copy link
Contributor

traversaro commented Oct 30, 2024

To be honest PYOMO library that we are using, should not call executables but directly run C++ code via pybind11, nanobind or any other wrapper. These executables are bit sketchy way of distributing libraries that are impossible to debug. But for now there is only one way, calling executables...

Feel free to open an issue on pyomo repo in that case. : )

@traversaro
Copy link
Contributor

To be honest PYOMO library that we are using, should not call executables but directly run C++ code via pybind11, nanobind or any other wrapper. These executables are bit sketchy way of distributing libraries that are impossible to debug. But for now there is only one way, calling executables...

Feel free to open an issue on pyomo repo in that case. : )

Apparently you already did, cross-link: Pyomo/pyomo#3395 .

@petrasvestartas
Copy link

petrasvestartas commented Oct 30, 2024

@traversaro
Is there any chance that you would make 3.14.9 executable bin content available on conda 3.14.9 version?

@traversaro
Copy link
Contributor

Is there any chance that Ipopt would make 3.14.9 executable and its dependencies available on conda?

I did a bit of recap on this on #55 (comment) . Unless specific exception, binaries on conda-forge are built by the conda-forge infrastructure. To build an ipopt executable, we need asl available on conda-forge on Windows. To do that, we need either:

Once those release are done, I would be happy to package ampl-mp or asl.

@traversaro
Copy link
Contributor

In conda-forge/staged-recipes#28198 I propose to add an ampl-asl that compiles fine also on Windows, if that is merged, then we can switch ipopt to depend on it, and we should be able to compile the ipopt executable also on Windows.

@traversaro
Copy link
Contributor

The issue should have been fixed by the new ipopt 3.14.17 package added in #125 (it will become available in ~1 hour). Please try it and let us know if that fixed the problem, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
7 participants