mdolab / pyoptsparse

pyOptSparse is an object-oriented framework for formulating and solving nonlinear constrained optimization problems in an efficient, reusable, and portable manner.
https://mdolab-pyoptsparse.readthedocs-hosted.com/en/latest/
GNU Lesser General Public License v3.0
223 stars 108 forks source link

pyOptSparse Error: There was an error importing the compiled IPOPT module #199

Closed ghost closed 3 years ago

ghost commented 3 years ago

I'm trying to install IPOPT modules for pyoptsparse following the instructions from here:

https://mdolab-pyoptsparse.readthedocs-hosted.com/en/latest/optimizers/IPOPT.html

and here:

https://coin-or.github.io/Ipopt/INSTALL.html

However when I attempt to run my python code I get this output

    Warning: unable to find pygeo module, some functionality in pyWeight_problem will be unavailable
    Full total jacobian was computed 3 times, taking 0.088970 seconds.
    Total jacobian shape: (109, 119) 

    Jacobian shape: (109, 119)  ( 5.99% nonzero)
    FWD solves: 11   REV solves: 0
    Total colors vs. total size: 11 vs 119  (90.8% improvement)

    Sparsity computed using tolerance: 1e-25
    Time to compute sparsity: 0.088970 sec.
    Time to compute coloring: 0.002759 sec.

    +------------------------------------------------------------------------------+
    | pyOptSparse Error: There was an error importing the compiled IPOPT module    |
    +------------------------------------------------------------------------------+

    Traceback (most recent call last):
      File "/home/rory/.local/lib/python3.6/site-packages/openmdao/drivers/pyoptsparse_driver.py", line 406, in run
        opt = getattr(_tmp, optimizer)()
      File "/home/rory/.local/lib/python3.6/site-packages/pyoptsparse/pyIPOPT/pyIPOPT.py", line 80, in __init__
        raise Error("There was an error importing the compiled IPOPT module")
    pyoptsparse.pyOpt_error.Error

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/home/rory/Documents/test.py", line 160, in <module>
        p.run_driver()
      File "/home/rory/.local/lib/python3.6/site-packages/openmdao/core/problem.py", line 663, in run_driver
        return self.driver.run()
      File "/home/rory/.local/lib/python3.6/site-packages/openmdao/drivers/pyoptsparse_driver.py", line 412, in run
        raise ImportError(msg)
    ImportError: Optimizer IPOPT is not available in this installation.

When I make, make test, and sudo make install there don't appear to be any errors. Although it says Libraries have been installed in: /home/rory/Packages/Ipopt/lib

The IPOPT instructions tell me after sudo make install that I should have installed the files to /usr/local/lib. However, there are only 4 folders for with the names of various python versions (2.7, 3.6, 3.7, 3.8).

When I 'git clone pyoptsparse' and go into ./pyoptsparse/pyoptsparse/pyIPOPT there is a setup file. I've tried pasting the IPOPT folder into there, then type 'python3 -m pip install .' I get the following error:

'No files/directories in /tmp/pip-FNCbss-build/pip-egg-info (from PKG-INFO)'

When I "clean build" pyoptsparse by getting a new git clone, then installing with 'python3 -m pip install .' it doesn't appear to attempt to install pyIPOPT. Which is strange because I think at some points in this saga it has tried to install IPOPT but probably failed due to some compilation error because I had the wrong env.

I really have no idea what else to do at this point, could someone please lend me a hand.

ewu63 commented 3 years ago

It sounds like you have IPOPT installed correctly, but it's not linked to pyOptSparse. This requires two things as explained in the docs:

  1. LD_LIBRARY_PATH must be set correctly for pyOptSparse to use the compiled shared libraries
  2. The environment variable $IPOPT_DIR must be set correctly in order for pyOptSparse to link to IPOPT. Maybe you forgot this step? This should point to your root IPOPT installation, e.g. $HOME/packages/Ipopt when following the installation instructions in the docs.

Don't bother with copying source codes, that's not necessary. I would suggest setting those, then cleanly build pyOptSparse again.

ghost commented 3 years ago

@nwu63 Thanks, perhaps I'm misinterpreting what clean build means I'm new to linux. Does it mean downloading a new clone of pyoptsparse then installing it with 'python3 -m pip install .' ?

This is my terminal output from implementing your steps:

rory@rory-MS-7850:/$ export IPOPT_DIR='/home/rory/Packages/Ipopt'
rory@rory-MS-7850:/$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$IPOPT_DIR/lib
rory@rory-MS-7850:/$ cd /home/rory/Packages
rory@rory-MS-7850:~/Packages$ git clone https://github.com/mdolab/pyoptsparse
Cloning into 'pyoptsparse'...
remote: Enumerating objects: 27, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 4314 (delta 8), reused 0 (delta 0), pack-reused 4287
Receiving objects: 100% (4314/4314), 2.15 MiB | 1.75 MiB/s, done.
Resolving deltas: 100% (2997/2997), done.
rory@rory-MS-7850:~/Packages$ cd pyoptsparse
rory@rory-MS-7850:~/Packages/pyoptsparse$ python3 -m pip install .
Defaulting to user installation because normal site-packages is not writeable
Processing /home/rory/Packages/pyoptsparse
Requirement already satisfied: sqlitedict>=1.6 in /home/rory/.local/lib/python3.6/site-packages (from pyoptsparse==2.4.1) (1.7.0)
Requirement already satisfied: numpy>=1.16 in /home/rory/.local/lib/python3.6/site-packages (from pyoptsparse==2.4.1) (1.19.5)
Requirement already satisfied: scipy>1.2 in /home/rory/.local/lib/python3.6/site-packages (from pyoptsparse==2.4.1) (1.5.4)
Requirement already satisfied: mdolab-baseclasses>=1.3.1 in /home/rory/.local/lib/python3.6/site-packages (from pyoptsparse==2.4.1) (1.4.0)
Building wheels for collected packages: pyoptsparse
  Building wheel for pyoptsparse (setup.py) ... done
  Created wheel for pyoptsparse: filename=pyoptsparse-2.4.1-cp36-cp36m-linux_x86_64.whl size=893691 sha256=226f5c39f07806eb5767228820fd60cfb475524716ef4d3832065988ffae7c72
  Stored in directory: /tmp/pip-ephem-wheel-cache-uz8vef61/wheels/9a/58/f0/beb6654b07cfa8eea4bdd942eeba1bcb1fd41973554c3b7be9
Successfully built pyoptsparse
Installing collected packages: pyoptsparse
  Attempting uninstall: pyoptsparse
    Found existing installation: pyoptsparse 2.4.1
    Uninstalling pyoptsparse-2.4.1:
      Successfully uninstalled pyoptsparse-2.4.1
Successfully installed pyoptsparse-2.4.1
rory@rory-MS-7850:~/Packages/pyoptsparse$ 

One thing I've noticed is that the path LD_LIBRARY_PATH is empty until I add this path to it. Perhaps my path is named something other than LD_LIBRARY_PATH?

ghost commented 3 years ago

Here's my env

LD_LIBRARY_PATH=:/home/rory/Packages/Ipopt/lib:/home/rory/Packages/Ipopt/lib
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
LESSCLOSE=/usr/bin/lesspipe %s %s
XDG_MENU_PREFIX=gnome-
LANG=en_GB.UTF-8
GDM_LANG=en_GB
PANTHEON_TERMINAL_ID=1
DISPLAY=:0
QT_STYLE_OVERRIDE=adwaita
OLDPWD=/home/rory/Packages
GTK_CSD=1
COLORTERM=truecolor
XDG_VTNR=7
GIO_LAUNCHED_DESKTOP_FILE_PID=3996
GTK3_MODULES=pantheon-filechooser-module
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
MANDATORY_PATH=/usr/share/gconf/pantheon.mandatory.path
XDG_SESSION_ID=c3
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/rory
USER=rory
DESKTOP_SESSION=pantheon
DEFAULTS_PATH=/usr/share/gconf/pantheon.default.path
QT_QPA_PLATFORMTHEME=gtk3
PWD=/home/rory/Packages/pyoptsparse
HOME=/home/rory
SSH_AGENT_PID=2158
QT_ACCESSIBILITY=1
IPOPT_DIR=/home/rory/Packages/Ipopt
XDG_SESSION_TYPE=x11
XDG_DATA_DIRS=/usr/share/gnome:/usr/share/pantheon:/home/rory/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share:/var/lib/snapd/desktop
GSETTINGS_SCHEMA_DIR=/home/rory/data
XDG_SESSION_DESKTOP=pantheon
GTK_MODULES=gail:atk-bridge
TERM=xterm-256color
SHELL=/bin/bash
VTE_VERSION=5202
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
QT_IM_MODULE=ibus
XMODIFIERS=@im=ibus
XDG_CURRENT_DESKTOP=Pantheon
GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
GIO_LAUNCHED_DESKTOP_FILE=/usr/share/applications/open-pantheon-terminal-here.desktop
XDG_SEAT=seat0
SHLVL=1
LANGUAGE=en_GB:en
PROMPT_COMMAND=__bp_precmd_invoke_cmd; dbus-send --type=method_call --session --dest=io.elementary.terminal /io/elementary/terminal io.elementary.terminal.ProcessFinished string:$PANTHEON_TERMINAL_ID string:"$(history 1 | cut -c 8-)" int32:$__bp_last_ret_value >/dev/null 2>&1; __bp_interactive_mode;
GDMSESSION=pantheon
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
LOGNAME=rory
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000
XAUTHORITY=/home/rory/.Xauthority
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session1
XDG_CONFIG_DIRS=/etc/xdg/xdg-pantheon:/etc/xdg
PATH=/home/rory/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
SESSION_MANAGER=local/rory-MS-7850:@/tmp/.ICE-unix/2029,unix/rory-MS-7850:/tmp/.ICE-unix/2029
LESSOPEN=| /usr/bin/lesspipe %s
_=/usr/bin/env
ewu63 commented 3 years ago

Terminal output looks fine, does this work? Do you still encounter the same error as before?

ghost commented 3 years ago

@nwu63 Yes same issue, unfortunately.

ghost commented 3 years ago

@nwu63 I tried a new method for installing IPOPT using coinbrew (from this page https://coin-or.github.io/coinbrew/) and now when I attempt to install pyoptsparse I get an error which I've posted below. I'm going to double check IPOPT_DIR, and the lib path.

rory@rory-MS-7850:~/Packages/pyoptsparse$ python3 -m pip install .
Defaulting to user installation because normal site-packages is not writeable
Processing /home/rory/Packages/pyoptsparse
Requirement already satisfied: sqlitedict>=1.6 in /home/rory/.local/lib/python3.6/site-packages (from pyoptsparse==2.4.1) (1.7.0)
Requirement already satisfied: numpy>=1.16 in /home/rory/.local/lib/python3.6/site-packages (from pyoptsparse==2.4.1) (1.19.5)
Requirement already satisfied: scipy>1.2 in /home/rory/.local/lib/python3.6/site-packages (from pyoptsparse==2.4.1) (1.5.4)
Requirement already satisfied: mdolab-baseclasses>=1.3.1 in /home/rory/.local/lib/python3.6/site-packages (from pyoptsparse==2.4.1) (1.4.0)
Building wheels for collected packages: pyoptsparse
  Building wheel for pyoptsparse (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-07fqkay1/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-07fqkay1/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-lt9gfik9
       cwd: /tmp/pip-req-build-07fqkay1/
  Complete output (477 lines):
  running bdist_wheel
  running build
  running config_cc
  unifing config_cc, config, build_clib, build_ext, build commands --compiler options
  running config_fc
  unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
  running build_src
  build_src
  building library "slsqp" sources
  building library "conmin" sources
  building library "nsga2" sources
  building library "psqp" sources
  building extension "pyoptsparse.pyIPOPT.pyipoptcore" sources
  building extension "pyoptsparse.pySLSQP.slsqp" sources
  f2py options: []
    adding 'build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/pyoptsparse/pySLSQP/source/f2py/fortranobject.c' to sources.
    adding 'build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/pyoptsparse/pySLSQP/source/f2py' to include_dirs.
  building extension "pyoptsparse.pyCONMIN.conmin" sources
  f2py options: []
    adding 'build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/pyoptsparse/pyCONMIN/source/f2py/fortranobject.c' to sources.
    adding 'build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/pyoptsparse/pyCONMIN/source/f2py' to include_dirs.
    adding 'build/src.linux-x86_64-3.6/pyoptsparse/pyCONMIN/source/f2py/conmin-f2pywrappers.f' to sources.
  building extension "pyoptsparse.pyNSGA2.nsga2" sources
  building extension "pyoptsparse.pyPSQP.psqp" sources
  f2py options: []
    adding 'build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/pyoptsparse/pyPSQP/source/f2py/fortranobject.c' to sources.
    adding 'build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/pyoptsparse/pyPSQP/source/f2py' to include_dirs.
    adding 'build/src.linux-x86_64-3.6/pyoptsparse/pyPSQP/source/f2py/psqp-f2pywrappers.f' to sources.
  building data_files sources
  build_src: building npy-pkg config files
  running build_py
  creating build/lib.linux-x86_64-3.6
  creating build/lib.linux-x86_64-3.6/pyoptsparse
  copying pyoptsparse/pyOpt_objective.py -> build/lib.linux-x86_64-3.6/pyoptsparse
  copying pyoptsparse/pyOpt_optimization.py -> build/lib.linux-x86_64-3.6/pyoptsparse
  copying pyoptsparse/pyOpt_utils.py -> build/lib.linux-x86_64-3.6/pyoptsparse
  copying pyoptsparse/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse
  copying pyoptsparse/pyOpt_solution.py -> build/lib.linux-x86_64-3.6/pyoptsparse
  copying pyoptsparse/pyOpt_error.py -> build/lib.linux-x86_64-3.6/pyoptsparse
  copying pyoptsparse/pyOpt_optimizer.py -> build/lib.linux-x86_64-3.6/pyoptsparse
  copying pyoptsparse/pyOpt_history.py -> build/lib.linux-x86_64-3.6/pyoptsparse
  copying pyoptsparse/pyOpt_gradient.py -> build/lib.linux-x86_64-3.6/pyoptsparse
  copying pyoptsparse/pyOpt_variable.py -> build/lib.linux-x86_64-3.6/pyoptsparse
  copying pyoptsparse/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse
  copying pyoptsparse/pyOpt_MPI.py -> build/lib.linux-x86_64-3.6/pyoptsparse
  copying pyoptsparse/pyOpt_constraint.py -> build/lib.linux-x86_64-3.6/pyoptsparse
  creating build/lib.linux-x86_64-3.6/pyoptsparse/pySNOPT
  copying pyoptsparse/pySNOPT/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pySNOPT
  copying pyoptsparse/pySNOPT/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pySNOPT
  copying pyoptsparse/pySNOPT/pySNOPT.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pySNOPT
  creating build/lib.linux-x86_64-3.6/pyoptsparse/pyIPOPT
  copying pyoptsparse/pyIPOPT/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyIPOPT
  copying pyoptsparse/pyIPOPT/pyIPOPT.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyIPOPT
  copying pyoptsparse/pyIPOPT/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyIPOPT
  creating build/lib.linux-x86_64-3.6/pyoptsparse/pySLSQP
  copying pyoptsparse/pySLSQP/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pySLSQP
  copying pyoptsparse/pySLSQP/pySLSQP.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pySLSQP
  copying pyoptsparse/pySLSQP/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pySLSQP
  creating build/lib.linux-x86_64-3.6/pyoptsparse/pyCONMIN
  copying pyoptsparse/pyCONMIN/pyCONMIN.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyCONMIN
  copying pyoptsparse/pyCONMIN/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyCONMIN
  copying pyoptsparse/pyCONMIN/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyCONMIN
  creating build/lib.linux-x86_64-3.6/pyoptsparse/pyNLPQLP
  copying pyoptsparse/pyNLPQLP/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyNLPQLP
  copying pyoptsparse/pyNLPQLP/pyNLPQLP.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyNLPQLP
  copying pyoptsparse/pyNLPQLP/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyNLPQLP
  creating build/lib.linux-x86_64-3.6/pyoptsparse/pyNSGA2
  copying pyoptsparse/pyNSGA2/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyNSGA2
  copying pyoptsparse/pyNSGA2/pyNSGA2.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyNSGA2
  copying pyoptsparse/pyNSGA2/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyNSGA2
  creating build/lib.linux-x86_64-3.6/pyoptsparse/pyPSQP
  copying pyoptsparse/pyPSQP/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyPSQP
  copying pyoptsparse/pyPSQP/pyPSQP.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyPSQP
  copying pyoptsparse/pyPSQP/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyPSQP
  creating build/lib.linux-x86_64-3.6/pyoptsparse/pyALPSO
  copying pyoptsparse/pyALPSO/alpso_ext.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyALPSO
  copying pyoptsparse/pyALPSO/pyALPSO.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyALPSO
  copying pyoptsparse/pyALPSO/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyALPSO
  copying pyoptsparse/pyALPSO/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyALPSO
  copying pyoptsparse/pyALPSO/alpso.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyALPSO
  creating build/lib.linux-x86_64-3.6/pyoptsparse/pyParOpt
  copying pyoptsparse/pyParOpt/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyParOpt
  copying pyoptsparse/pyParOpt/ParOpt.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyParOpt
  copying pyoptsparse/pyParOpt/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyParOpt
  creating build/lib.linux-x86_64-3.6/pyoptsparse/postprocessing
  copying pyoptsparse/postprocessing/view_saved_figure.py -> build/lib.linux-x86_64-3.6/pyoptsparse/postprocessing
  copying pyoptsparse/postprocessing/OptView_baseclass.py -> build/lib.linux-x86_64-3.6/pyoptsparse/postprocessing
  copying pyoptsparse/postprocessing/OptView.py -> build/lib.linux-x86_64-3.6/pyoptsparse/postprocessing
  copying pyoptsparse/postprocessing/OptView_dash.py -> build/lib.linux-x86_64-3.6/pyoptsparse/postprocessing
  copying pyoptsparse/postprocessing/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/postprocessing
  running build_clib
  customize UnixCCompiler
  customize UnixCCompiler using build_clib
  get_default_fcompiler: matching types: '['gnu95', 'intel', 'lahey', 'pg', 'nv', 'absoft', 'nag', 'vast', 'compaq', 'intele', 'intelem', 'gnu', 'g95', 'pathf95', 'nagfor']'
  customize Gnu95FCompiler
  Found executable /usr/bin/gfortran
  customize Gnu95FCompiler
  customize Gnu95FCompiler using build_clib
  building 'slsqp' library
  compiling Fortran sources
  Fortran f77 compiler: /usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops
  Fortran f90 compiler: /usr/bin/gfortran -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops
  Fortran fix compiler: /usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops
  creating build/temp.linux-x86_64-3.6
  creating build/temp.linux-x86_64-3.6/pyoptsparse
  creating build/temp.linux-x86_64-3.6/pyoptsparse/pySLSQP
  creating build/temp.linux-x86_64-3.6/pyoptsparse/pySLSQP/source
  compile options: '-I/home/rory/.local/lib/python3.6/site-packages/numpy/core/include -c'
  gfortran:f77: pyoptsparse/pySLSQP/source/h12.f
  gfortran:f77: pyoptsparse/pySLSQP/source/closeunit.f
  gfortran:f77: pyoptsparse/pySLSQP/source/drotg.f
  gfortran:f77: pyoptsparse/pySLSQP/source/dcopy.f
  gfortran:f77: pyoptsparse/pySLSQP/source/daxpy.f
  pyoptsparse/pySLSQP/source/dcopy.f:181:72:

      10 ASSIGN 30 TO NEXT
                                                                          1
  Warning: Deleted feature: ASSIGN statement at (1)
  pyoptsparse/pySLSQP/source/dcopy.f:186:19:

      20    GO TO NEXT,(30, 50, 70, 110)
                     1
  Warning: Deleted feature: Assigned GOTO statement at (1)
  pyoptsparse/pySLSQP/source/dcopy.f:188:72:

         ASSIGN 50 TO NEXT
                                                                          1
  Warning: Deleted feature: ASSIGN statement at (1)
  pyoptsparse/pySLSQP/source/dcopy.f:198:72:

         ASSIGN 70 TO NEXT
                                                                          1
  Warning: Deleted feature: ASSIGN statement at (1)
  pyoptsparse/pySLSQP/source/dcopy.f:204:72:

         ASSIGN 110 TO NEXT
                                                                          1
  Warning: Deleted feature: ASSIGN statement at (1)
  pyoptsparse/pySLSQP/source/dcopy.f:217:5:

     110 IF( ABS(DX(I)) .LE. XMAX ) GO TO 115
       1
  Warning: Label 110 at (1) defined but not used [-Wunused-label]
  pyoptsparse/pySLSQP/source/dcopy.f:212:5:

      70 IF( ABS(DX(I)) .GT. CUTLO ) GO TO 75
       1
  Warning: Label 70 at (1) defined but not used [-Wunused-label]
  pyoptsparse/pySLSQP/source/dcopy.f:193:5:

      50 IF( DX(I) .EQ. ZERO) GO TO 200
       1
  Warning: Label 50 at (1) defined but not used [-Wunused-label]
  gfortran:f77: pyoptsparse/pySLSQP/source/dscal.f
  gfortran:f77: pyoptsparse/pySLSQP/source/ldl.f
  gfortran:f77: pyoptsparse/pySLSQP/source/lsei.f
  gfortran:f77: pyoptsparse/pySLSQP/source/hfti.f
  pyoptsparse/pySLSQP/source/ldl.f:69:0:

             ALPHA=TP/T

  Warning: ‘tp’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pySLSQP/source/dcopy.f:218:0:

            SUM = ONE + SUM * (XMAX / DX(I))**2

  Warning: ‘xmax’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  gfortran:f77: pyoptsparse/pySLSQP/source/drot.f
  pyoptsparse/pySLSQP/source/ldl.f:174:0:

         IF (ABS(E) .LE. TOL1) GOTO 30

  Warning: ‘e’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pySLSQP/source/ldl.f:199:0:

         IF (U - A .LT. TOL2) D = SIGN(TOL1, M - X)

  Warning: ‘u’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pySLSQP/source/ldl.f:220:0:

         IF (FU .GT. FX) GOTO 60

  Warning: ‘fx’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pySLSQP/source/ldl.f:221:0:

         IF (U .GE. X) A = X

  Warning: ‘x’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pySLSQP/source/ldl.f:232:0:

         IF (FU .LE. FW .OR. W .EQ. X) GOTO 70

  Warning: ‘fw’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pySLSQP/source/ldl.f:232:0: Warning: ‘w’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pySLSQP/source/ldl.f:233:0:

         IF (FU .LE. FV .OR. V .EQ. X .OR. V .EQ. W) GOTO 80

  Warning: ‘v’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pySLSQP/source/ldl.f:178:0:

         R = (X - W)*(FX - FV)

  Warning: ‘fv’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pySLSQP/source/ldl.f:206:0:

         IF (X .LT. M) E = B - X

  Warning: ‘b’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pySLSQP/source/ldl.f:205:0:

      40 IF (X .GE. M) E = A - X

  Warning: ‘a’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  gfortran:f77: pyoptsparse/pySLSQP/source/ldp.f
  gfortran:f77: pyoptsparse/pySLSQP/source/lsq.f
  gfortran:f77: pyoptsparse/pySLSQP/source/lsi.f
  gfortran:f77: pyoptsparse/pySLSQP/source/openunit.f
  gfortran:f77: pyoptsparse/pySLSQP/source/slsqp.f
  f951: Warning: Nonconforming tab character in column 1 of line 218 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 222 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 224 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 225 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 226 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 247 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 248 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 252 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 289 [-Wtabs]
  f951: Warning: Nonconforming tab character in column 1 of line 290 [-Wtabs]
  pyoptsparse/pySLSQP/source/slsqp.f:304:72:

        3 /,5X,59HSTART OF THE SEQUENTIAL LEAST SQUARES PROGRAMMING ALGORITHM,
                                                                          1
  Warning: Line truncated at (1) [-Wline-truncation]
  pyoptsparse/pySLSQP/source/slsqp.f:283:5:

       3 CONTINUE
       1
  Warning: Label 3 at (1) defined but not used [-Wunused-label]
  gfortran:f77: pyoptsparse/pySLSQP/source/slsqpb.f
  gfortran:f77: pyoptsparse/pySLSQP/source/nnls.f
  pyoptsparse/pySLSQP/source/nnls.f:96:0:

         J=INDEX(IZ)

  Warning: ‘izmax’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  x86_64-linux-gnu-gcc-ar: adding 17 object files to build/temp.linux-x86_64-3.6/libslsqp.a
  building 'conmin' library
  compiling Fortran sources
  Fortran f77 compiler: /usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops
  Fortran f90 compiler: /usr/bin/gfortran -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops
  Fortran fix compiler: /usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops
  creating build/temp.linux-x86_64-3.6/pyoptsparse/pyCONMIN
  creating build/temp.linux-x86_64-3.6/pyoptsparse/pyCONMIN/source
  compile options: '-I/home/rory/.local/lib/python3.6/site-packages/numpy/core/include -c'
  gfortran:f77: pyoptsparse/pyCONMIN/source/closeunit.f
  gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn00.f
  gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn02.f
  gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn01.f
  pyoptsparse/pyCONMIN/source/cnmn01.f:1:64:

         SUBROUTINE CNMN01 (JGOTO,X,DF,G,ISC,IC,A,G1,VLB,VUB,SCAL,C,NCAL,DX
                                                                  1
  Warning: Unused dummy argument ‘c’ at (1) [-Wunused-dummy-argument]
  pyoptsparse/pyCONMIN/source/cnmn01.f:1:53:

         SUBROUTINE CNMN01 (JGOTO,X,DF,G,ISC,IC,A,G1,VLB,VUB,SCAL,C,NCAL,DX
                                                       1
  Warning: Unused dummy argument ‘vlb’ at (1) [-Wunused-dummy-argument]
  gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn03.f
  pyoptsparse/pyCONMIN/source/cnmn01.f:85:0:

         INFO=INF

  Warning: ‘inf’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn04.f
  gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn05.f
  gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn06.f
  gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn07.f
  gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn08.f
  gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn09.f
  f951: Warning: Nonconforming tab character in column 2 of line 31 [-Wtabs]
  pyoptsparse/pyCONMIN/source/cnmn09.f:2:15:

        . N1,N2,N3,N4,N5)
                 1
  Warning: Unused dummy argument ‘n3’ at (1) [-Wunused-dummy-argument]
  pyoptsparse/pyCONMIN/source/cnmn09.f:2:18:

        . N1,N2,N3,N4,N5)
                    1
  Warning: Unused dummy argument ‘n4’ at (1) [-Wunused-dummy-argument]
  pyoptsparse/pyCONMIN/source/cnmn09.f:2:21:

        . N1,N2,N3,N4,N5)
                       1
  Warning: Unused dummy argument ‘n5’ at (1) [-Wunused-dummy-argument]
  gfortran:f77: pyoptsparse/pyCONMIN/source/conmin.f
  gfortran:f77: pyoptsparse/pyCONMIN/source/openunit.f
  x86_64-linux-gnu-gcc-ar: adding 13 object files to build/temp.linux-x86_64-3.6/libconmin.a
  building 'nsga2' library
  compiling C sources
  C compiler: x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC

  creating build/temp.linux-x86_64-3.6/pyoptsparse/pyNSGA2
  creating build/temp.linux-x86_64-3.6/pyoptsparse/pyNSGA2/source
  compile options: '-I/home/rory/.local/lib/python3.6/site-packages/numpy/core/include -c'
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/decode.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/allocate.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/crossover.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/eval.c
  pyoptsparse/pyNSGA2/source/eval.c: In function ‘evaluate_ind’:
  pyoptsparse/pyNSGA2/source/eval.c:25:5: warning: implicit declaration of function ‘nsga2func’; did you mean ‘nsga2’? [-Wimplicit-function-declaration]
       nsga2func (global.nreal, global.nbin, global.nobj, global.ncon, ind->xreal, ind->xbin, ind->gene, ind->obj, ind->constr);
       ^~~~~~~~~
       nsga2
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/auxiliary.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/dominance.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/fillnds.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/initialize.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/crowddist.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/merge.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/list.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/nsga2.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/mutation.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/rank.c
  pyoptsparse/pyNSGA2/source/nsga2.c: In function ‘nsga2’:
  pyoptsparse/pyNSGA2/source/nsga2.c:312:61: warning: format ‘%i’ expects argument of type ‘int’, but argument 3 has type ‘int *’ [-Wformat=]
      fprintf(fpt5,"\n Number of crossover of real variable = %i",nrealcross);
                                                              ~^
                                                              %ls
  pyoptsparse/pyNSGA2/source/nsga2.c:313:60: warning: format ‘%i’ expects argument of type ‘int’, but argument 3 has type ‘int *’ [-Wformat=]
      fprintf(fpt5,"\n Number of mutation of real variable = %i",nrealmut);
                                                             ~^
                                                             %ls
  pyoptsparse/pyNSGA2/source/nsga2.c:317:63: warning: format ‘%i’ expects argument of type ‘int’, but argument 3 has type ‘int *’ [-Wformat=]
      fprintf(fpt5,"\n Number of crossover of binary variable = %i",nbincross);
                                                                ~^
                                                                %ls
  pyoptsparse/pyNSGA2/source/nsga2.c:318:62: warning: format ‘%i’ expects argument of type ‘int’, but argument 3 has type ‘int *’ [-Wformat=]
      fprintf(fpt5,"\n Number of mutation of binary variable = %i",nbinmut);
                                                               ~^
                                                               %ls
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/sort.c
  pyoptsparse/pyNSGA2/source/nsga2.c:216:18: warning: ‘nbits’ is used uninitialized in this function [-Wuninitialized]
       global.nbits = nbits;
       ~~~~~~~~~~~~~^~~~~~~
  pyoptsparse/pyNSGA2/source/nsga2.c:219:23: warning: ‘min_binvar’ is used uninitialized in this function [-Wuninitialized]
       global.min_binvar = min_binvar;
       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
  pyoptsparse/pyNSGA2/source/nsga2.c:220:23: warning: ‘max_binvar’ is used uninitialized in this function [-Wuninitialized]
       global.max_binvar = max_binvar;
       ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
  pyoptsparse/pyNSGA2/source/nsga2.c:332:3: warning: ‘fpt3’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     fclose(fpt3);
     ^~~~~~~~~~~~
  pyoptsparse/pyNSGA2/source/nsga2.c:331:3: warning: ‘fpt2’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     fclose(fpt2);
     ^~~~~~~~~~~~
  pyoptsparse/pyNSGA2/source/nsga2.c:330:3: warning: ‘fpt1’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     fclose(fpt1);
     ^~~~~~~~~~~~
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/report.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/tourselect.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/rand.c
  x86_64-linux-gnu-gcc-ar: adding 18 object files to build/temp.linux-x86_64-3.6/libnsga2.a
  building 'psqp' library
  compiling Fortran sources
  Fortran f77 compiler: /usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops
  Fortran f90 compiler: /usr/bin/gfortran -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops
  Fortran fix compiler: /usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops
  creating build/temp.linux-x86_64-3.6/pyoptsparse/pyPSQP
  creating build/temp.linux-x86_64-3.6/pyoptsparse/pyPSQP/source
  compile options: '-I/home/rory/.local/lib/python3.6/site-packages/numpy/core/include -c'
  gfortran:f90: pyoptsparse/pyPSQP/source/psqp_wrap.f90
  gfortran:f77: pyoptsparse/pyPSQP/source/mqsubs.f
  gfortran:f77: pyoptsparse/pyPSQP/source/openunit.f
  gfortran:f77: pyoptsparse/pyPSQP/source/closeunit.f
  gfortran:f77: pyoptsparse/pyPSQP/source/pqsubs.f
  gfortran:f77: pyoptsparse/pyPSQP/source/psqp.f
  pyoptsparse/pyPSQP/source/psqp.f:528:5:

   11172 CONTINUE
       1
  Warning: Label 11172 at (1) defined but not used [-Wunused-label]
  pyoptsparse/pyPSQP/source/pqsubs.f:2567:5:

       1 CONTINUE
       1
  Warning: Label 1 at (1) defined but not used [-Wunused-label]
  pyoptsparse/pyPSQP/source/pqsubs.f:2721:5:

       1 CONTINUE
       1
  Warning: Label 1 at (1) defined but not used [-Wunused-label]
  pyoptsparse/pyPSQP/source/pqsubs.f:2964:5:

       1 CONTINUE
       1
  Warning: Label 1 at (1) defined but not used [-Wunused-label]
  pyoptsparse/pyPSQP/source/pqsubs.f:3590:5:

      21 CONTINUE
       1
  Warning: Label 21 at (1) defined but not used [-Wunused-label]
  pyoptsparse/pyPSQP/source/psqp.f:424:0:

             NTESX = NTESX + 1

  Warning: ‘ntesx’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pyPSQP/source/pqsubs.f:2237:0:

         R = RL + (RU-RL)/DEN

  Warning: ‘den’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pyPSQP/source/pqsubs.f:2231:0:

         DEN = 1.0D 0 - B*(1.0D 0/DEN)**3

  Warning: ‘b’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pyPSQP/source/pqsubs.f:2207:0:

         DEN = 2.0D 0*(1.0D 0-A)

  Warning: ‘a’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pyPSQP/source/pqsubs.f:2346:0:

                 DIS = AU + AI - DEN - TWO* (ONE+DIS)

  Warning: ‘au’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pyPSQP/source/pqsubs.f:2346:0: Warning: ‘ai’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  pyoptsparse/pyPSQP/source/pqsubs.f:3247:0:

         CALL MXDPGS(N,H,1.0D0/GAM)

  Warning: ‘gam’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  x86_64-linux-gnu-gcc-ar: adding 6 object files to build/temp.linux-x86_64-3.6/libpsqp.a
  running build_ext
  customize UnixCCompiler
  customize UnixCCompiler using build_ext
  get_default_fcompiler: matching types: '['gnu95', 'intel', 'lahey', 'pg', 'nv', 'absoft', 'nag', 'vast', 'compaq', 'intele', 'intelem', 'gnu', 'g95', 'pathf95', 'nagfor']'
  customize Gnu95FCompiler
  customize Gnu95FCompiler
  customize Gnu95FCompiler using build_ext
  building 'pyoptsparse.pyIPOPT.pyipoptcore' extension
  compiling C sources
  C compiler: x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC

  creating build/temp.linux-x86_64-3.6/pyoptsparse/pyIPOPT
  creating build/temp.linux-x86_64-3.6/pyoptsparse/pyIPOPT/src
  compile options: '-I/home/rory/.local/lib/python3.6/site-packages/numpy/core/include -I/home/rory/IpoptInstall/include/coin-or/ -I/home/rory/.local/lib/python3.6/site-packages/numpy/core/include -I/usr/include/python3.6m -c'
  x86_64-linux-gnu-gcc: pyoptsparse/pyIPOPT/src/callback.c
  x86_64-linux-gnu-gcc: pyoptsparse/pyIPOPT/src/pyipoptcoremodule.c
  In file included from /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/ndarraytypes.h:1822:0,
                   from /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/ndarrayobject.h:12,
                   from /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/arrayobject.h:4,
                   from pyoptsparse/pyIPOPT/src/hook.h:7,
                   from pyoptsparse/pyIPOPT/src/callback.c:36:
  /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
   #warning "Using deprecated NumPy API, disable it with " \
    ^~~~~~~
  In file included from /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/ndarraytypes.h:1822:0,
                   from /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/ndarrayobject.h:12,
                   from /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/arrayobject.h:4,
                   from pyoptsparse/pyIPOPT/src/hook.h:7,
                   from pyoptsparse/pyIPOPT/src/pyipoptcoremodule.c:9:
  /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
   #warning "Using deprecated NumPy API, disable it with " \
    ^~~~~~~
  pyoptsparse/pyIPOPT/src/pyipoptcoremodule.c: In function ‘set_intermediate_callback’:
  pyoptsparse/pyIPOPT/src/pyipoptcoremodule.c:509:15: warning: variable ‘myowndata’ set but not used [-Wunused-but-set-variable]
    DispatchData myowndata;
                 ^~~~~~~~~
  x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.6/pyoptsparse/pyIPOPT/src/callback.o build/temp.linux-x86_64-3.6/pyoptsparse/pyIPOPT/src/pyipoptcoremodule.o -L/home/rory/IpoptInstall/lib -Lbuild/temp.linux-x86_64-3.6 -lipopt -lcoinmumps -lcoinmetis -ldl -lm -lblas -llapack -o build/lib.linux-x86_64-3.6/pyoptsparse/pyIPOPT/pyipoptcore.cpython-36m-x86_64-linux-gnu.so -Wl,-rpath,/home/rory/IpoptInstall/lib -L/home/rory/IpoptInstall/lib
  /usr/bin/ld: cannot find -lcoinmetis
  collect2: error: ld returned 1 exit status
  error: Command "x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.6/pyoptsparse/pyIPOPT/src/callback.o build/temp.linux-x86_64-3.6/pyoptsparse/pyIPOPT/src/pyipoptcoremodule.o -L/home/rory/IpoptInstall/lib -Lbuild/temp.linux-x86_64-3.6 -lipopt -lcoinmumps -lcoinmetis -ldl -lm -lblas -llapack -o build/lib.linux-x86_64-3.6/pyoptsparse/pyIPOPT/pyipoptcore.cpython-36m-x86_64-linux-gnu.so -Wl,-rpath,/home/rory/IpoptInstall/lib -L/home/rory/IpoptInstall/lib" failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for pyoptsparse
  Running setup.py clean for pyoptsparse
Failed to build pyoptsparse
Installing collected packages: pyoptsparse
  Attempting uninstall: pyoptsparse
    Found existing installation: pyoptsparse 2.4.1
    Uninstalling pyoptsparse-2.4.1:
      Successfully uninstalled pyoptsparse-2.4.1
    Running setup.py install for pyoptsparse ... error
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-07fqkay1/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-07fqkay1/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-juoa8dmt/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/rory/.local/include/python3.6m/pyoptsparse
         cwd: /tmp/pip-req-build-07fqkay1/
    Complete output (477 lines):
    running install
    running build
    running config_cc
    unifing config_cc, config, build_clib, build_ext, build commands --compiler options
    running config_fc
    unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
    running build_src
    build_src
    building library "slsqp" sources
    building library "conmin" sources
    building library "nsga2" sources
    building library "psqp" sources
    building extension "pyoptsparse.pyIPOPT.pyipoptcore" sources
    building extension "pyoptsparse.pySLSQP.slsqp" sources
    f2py options: []
      adding 'build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/pyoptsparse/pySLSQP/source/f2py/fortranobject.c' to sources.
      adding 'build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/pyoptsparse/pySLSQP/source/f2py' to include_dirs.
    building extension "pyoptsparse.pyCONMIN.conmin" sources
    f2py options: []
      adding 'build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/pyoptsparse/pyCONMIN/source/f2py/fortranobject.c' to sources.
      adding 'build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/pyoptsparse/pyCONMIN/source/f2py' to include_dirs.
      adding 'build/src.linux-x86_64-3.6/pyoptsparse/pyCONMIN/source/f2py/conmin-f2pywrappers.f' to sources.
    building extension "pyoptsparse.pyNSGA2.nsga2" sources
    building extension "pyoptsparse.pyPSQP.psqp" sources
    f2py options: []
      adding 'build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/pyoptsparse/pyPSQP/source/f2py/fortranobject.c' to sources.
      adding 'build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/pyoptsparse/pyPSQP/source/f2py' to include_dirs.
      adding 'build/src.linux-x86_64-3.6/pyoptsparse/pyPSQP/source/f2py/psqp-f2pywrappers.f' to sources.
    building data_files sources
    build_src: building npy-pkg config files
    running build_py
    creating build/lib.linux-x86_64-3.6
    creating build/lib.linux-x86_64-3.6/pyoptsparse
    copying pyoptsparse/pyOpt_objective.py -> build/lib.linux-x86_64-3.6/pyoptsparse
    copying pyoptsparse/pyOpt_optimization.py -> build/lib.linux-x86_64-3.6/pyoptsparse
    copying pyoptsparse/pyOpt_utils.py -> build/lib.linux-x86_64-3.6/pyoptsparse
    copying pyoptsparse/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse
    copying pyoptsparse/pyOpt_solution.py -> build/lib.linux-x86_64-3.6/pyoptsparse
    copying pyoptsparse/pyOpt_error.py -> build/lib.linux-x86_64-3.6/pyoptsparse
    copying pyoptsparse/pyOpt_optimizer.py -> build/lib.linux-x86_64-3.6/pyoptsparse
    copying pyoptsparse/pyOpt_history.py -> build/lib.linux-x86_64-3.6/pyoptsparse
    copying pyoptsparse/pyOpt_gradient.py -> build/lib.linux-x86_64-3.6/pyoptsparse
    copying pyoptsparse/pyOpt_variable.py -> build/lib.linux-x86_64-3.6/pyoptsparse
    copying pyoptsparse/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse
    copying pyoptsparse/pyOpt_MPI.py -> build/lib.linux-x86_64-3.6/pyoptsparse
    copying pyoptsparse/pyOpt_constraint.py -> build/lib.linux-x86_64-3.6/pyoptsparse
    creating build/lib.linux-x86_64-3.6/pyoptsparse/pySNOPT
    copying pyoptsparse/pySNOPT/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pySNOPT
    copying pyoptsparse/pySNOPT/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pySNOPT
    copying pyoptsparse/pySNOPT/pySNOPT.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pySNOPT
    creating build/lib.linux-x86_64-3.6/pyoptsparse/pyIPOPT
    copying pyoptsparse/pyIPOPT/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyIPOPT
    copying pyoptsparse/pyIPOPT/pyIPOPT.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyIPOPT
    copying pyoptsparse/pyIPOPT/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyIPOPT
    creating build/lib.linux-x86_64-3.6/pyoptsparse/pySLSQP
    copying pyoptsparse/pySLSQP/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pySLSQP
    copying pyoptsparse/pySLSQP/pySLSQP.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pySLSQP
    copying pyoptsparse/pySLSQP/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pySLSQP
    creating build/lib.linux-x86_64-3.6/pyoptsparse/pyCONMIN
    copying pyoptsparse/pyCONMIN/pyCONMIN.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyCONMIN
    copying pyoptsparse/pyCONMIN/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyCONMIN
    copying pyoptsparse/pyCONMIN/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyCONMIN
    creating build/lib.linux-x86_64-3.6/pyoptsparse/pyNLPQLP
    copying pyoptsparse/pyNLPQLP/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyNLPQLP
    copying pyoptsparse/pyNLPQLP/pyNLPQLP.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyNLPQLP
    copying pyoptsparse/pyNLPQLP/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyNLPQLP
    creating build/lib.linux-x86_64-3.6/pyoptsparse/pyNSGA2
    copying pyoptsparse/pyNSGA2/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyNSGA2
    copying pyoptsparse/pyNSGA2/pyNSGA2.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyNSGA2
    copying pyoptsparse/pyNSGA2/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyNSGA2
    creating build/lib.linux-x86_64-3.6/pyoptsparse/pyPSQP
    copying pyoptsparse/pyPSQP/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyPSQP
    copying pyoptsparse/pyPSQP/pyPSQP.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyPSQP
    copying pyoptsparse/pyPSQP/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyPSQP
    creating build/lib.linux-x86_64-3.6/pyoptsparse/pyALPSO
    copying pyoptsparse/pyALPSO/alpso_ext.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyALPSO
    copying pyoptsparse/pyALPSO/pyALPSO.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyALPSO
    copying pyoptsparse/pyALPSO/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyALPSO
    copying pyoptsparse/pyALPSO/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyALPSO
    copying pyoptsparse/pyALPSO/alpso.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyALPSO
    creating build/lib.linux-x86_64-3.6/pyoptsparse/pyParOpt
    copying pyoptsparse/pyParOpt/setup.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyParOpt
    copying pyoptsparse/pyParOpt/ParOpt.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyParOpt
    copying pyoptsparse/pyParOpt/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/pyParOpt
    creating build/lib.linux-x86_64-3.6/pyoptsparse/postprocessing
    copying pyoptsparse/postprocessing/view_saved_figure.py -> build/lib.linux-x86_64-3.6/pyoptsparse/postprocessing
    copying pyoptsparse/postprocessing/OptView_baseclass.py -> build/lib.linux-x86_64-3.6/pyoptsparse/postprocessing
    copying pyoptsparse/postprocessing/OptView.py -> build/lib.linux-x86_64-3.6/pyoptsparse/postprocessing
    copying pyoptsparse/postprocessing/OptView_dash.py -> build/lib.linux-x86_64-3.6/pyoptsparse/postprocessing
    copying pyoptsparse/postprocessing/__init__.py -> build/lib.linux-x86_64-3.6/pyoptsparse/postprocessing
    running build_clib
    customize UnixCCompiler
    customize UnixCCompiler using build_clib
    get_default_fcompiler: matching types: '['gnu95', 'intel', 'lahey', 'pg', 'nv', 'absoft', 'nag', 'vast', 'compaq', 'intele', 'intelem', 'gnu', 'g95', 'pathf95', 'nagfor']'
    customize Gnu95FCompiler
    Found executable /usr/bin/gfortran
    customize Gnu95FCompiler
    customize Gnu95FCompiler using build_clib
    building 'slsqp' library
    compiling Fortran sources
    Fortran f77 compiler: /usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops
    Fortran f90 compiler: /usr/bin/gfortran -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops
    Fortran fix compiler: /usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops
    creating build/temp.linux-x86_64-3.6
    creating build/temp.linux-x86_64-3.6/pyoptsparse
    creating build/temp.linux-x86_64-3.6/pyoptsparse/pySLSQP
    creating build/temp.linux-x86_64-3.6/pyoptsparse/pySLSQP/source
    compile options: '-I/home/rory/.local/lib/python3.6/site-packages/numpy/core/include -c'
    gfortran:f77: pyoptsparse/pySLSQP/source/h12.f
    gfortran:f77: pyoptsparse/pySLSQP/source/dcopy.f
    gfortran:f77: pyoptsparse/pySLSQP/source/drotg.f
    gfortran:f77: pyoptsparse/pySLSQP/source/closeunit.f
    pyoptsparse/pySLSQP/source/dcopy.f:181:72:

        10 ASSIGN 30 TO NEXT
                                                                            1
    Warning: Deleted feature: ASSIGN statement at (1)
    pyoptsparse/pySLSQP/source/dcopy.f:186:19:

        20    GO TO NEXT,(30, 50, 70, 110)
                       1
    Warning: Deleted feature: Assigned GOTO statement at (1)
    pyoptsparse/pySLSQP/source/dcopy.f:188:72:

           ASSIGN 50 TO NEXT
                                                                            1
    Warning: Deleted feature: ASSIGN statement at (1)
    pyoptsparse/pySLSQP/source/dcopy.f:198:72:

           ASSIGN 70 TO NEXT
                                                                            1
    Warning: Deleted feature: ASSIGN statement at (1)
    pyoptsparse/pySLSQP/source/dcopy.f:204:72:

           ASSIGN 110 TO NEXT
                                                                            1
    Warning: Deleted feature: ASSIGN statement at (1)
    pyoptsparse/pySLSQP/source/dcopy.f:217:5:

       110 IF( ABS(DX(I)) .LE. XMAX ) GO TO 115
         1
    Warning: Label 110 at (1) defined but not used [-Wunused-label]
    pyoptsparse/pySLSQP/source/dcopy.f:212:5:

        70 IF( ABS(DX(I)) .GT. CUTLO ) GO TO 75
         1
    Warning: Label 70 at (1) defined but not used [-Wunused-label]
    pyoptsparse/pySLSQP/source/dcopy.f:193:5:

        50 IF( DX(I) .EQ. ZERO) GO TO 200
         1
    Warning: Label 50 at (1) defined but not used [-Wunused-label]
    gfortran:f77: pyoptsparse/pySLSQP/source/daxpy.f
    gfortran:f77: pyoptsparse/pySLSQP/source/dscal.f
    gfortran:f77: pyoptsparse/pySLSQP/source/hfti.f
    gfortran:f77: pyoptsparse/pySLSQP/source/ldl.f
    gfortran:f77: pyoptsparse/pySLSQP/source/lsei.f
    pyoptsparse/pySLSQP/source/dcopy.f:218:0:

              SUM = ONE + SUM * (XMAX / DX(I))**2

    Warning: ‘xmax’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pySLSQP/source/ldl.f:69:0:

               ALPHA=TP/T

    Warning: ‘tp’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    gfortran:f77: pyoptsparse/pySLSQP/source/drot.f
    pyoptsparse/pySLSQP/source/ldl.f:174:0:

           IF (ABS(E) .LE. TOL1) GOTO 30

    Warning: ‘e’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pySLSQP/source/ldl.f:199:0:

           IF (U - A .LT. TOL2) D = SIGN(TOL1, M - X)

    Warning: ‘u’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pySLSQP/source/ldl.f:220:0:

           IF (FU .GT. FX) GOTO 60

    Warning: ‘fx’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pySLSQP/source/ldl.f:221:0:

           IF (U .GE. X) A = X

    Warning: ‘x’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pySLSQP/source/ldl.f:232:0:

           IF (FU .LE. FW .OR. W .EQ. X) GOTO 70

    Warning: ‘fw’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pySLSQP/source/ldl.f:232:0: Warning: ‘w’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pySLSQP/source/ldl.f:233:0:

           IF (FU .LE. FV .OR. V .EQ. X .OR. V .EQ. W) GOTO 80

    Warning: ‘v’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pySLSQP/source/ldl.f:178:0:

           R = (X - W)*(FX - FV)

    Warning: ‘fv’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pySLSQP/source/ldl.f:206:0:

           IF (X .LT. M) E = B - X

    Warning: ‘b’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pySLSQP/source/ldl.f:205:0:

        40 IF (X .GE. M) E = A - X

    Warning: ‘a’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    gfortran:f77: pyoptsparse/pySLSQP/source/lsq.f
    gfortran:f77: pyoptsparse/pySLSQP/source/ldp.f
    gfortran:f77: pyoptsparse/pySLSQP/source/lsi.f
    gfortran:f77: pyoptsparse/pySLSQP/source/openunit.f
    gfortran:f77: pyoptsparse/pySLSQP/source/slsqp.f
    gfortran:f77: pyoptsparse/pySLSQP/source/nnls.f
    gfortran:f77: pyoptsparse/pySLSQP/source/slsqpb.f
    f951: Warning: Nonconforming tab character in column 1 of line 218 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 222 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 224 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 225 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 226 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 247 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 248 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 252 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 289 [-Wtabs]
    f951: Warning: Nonconforming tab character in column 1 of line 290 [-Wtabs]
    pyoptsparse/pySLSQP/source/slsqp.f:304:72:

          3 /,5X,59HSTART OF THE SEQUENTIAL LEAST SQUARES PROGRAMMING ALGORITHM,
                                                                            1
    Warning: Line truncated at (1) [-Wline-truncation]
    pyoptsparse/pySLSQP/source/slsqp.f:283:5:

         3 CONTINUE
         1
    Warning: Label 3 at (1) defined but not used [-Wunused-label]
    pyoptsparse/pySLSQP/source/nnls.f:96:0:

           J=INDEX(IZ)

    Warning: ‘izmax’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    x86_64-linux-gnu-gcc-ar: adding 17 object files to build/temp.linux-x86_64-3.6/libslsqp.a
    building 'conmin' library
    compiling Fortran sources
    Fortran f77 compiler: /usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops
    Fortran f90 compiler: /usr/bin/gfortran -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops
    Fortran fix compiler: /usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops
    creating build/temp.linux-x86_64-3.6/pyoptsparse/pyCONMIN
    creating build/temp.linux-x86_64-3.6/pyoptsparse/pyCONMIN/source
    compile options: '-I/home/rory/.local/lib/python3.6/site-packages/numpy/core/include -c'
    gfortran:f77: pyoptsparse/pyCONMIN/source/closeunit.f
    gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn00.f
    gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn02.f
    gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn01.f
    pyoptsparse/pyCONMIN/source/cnmn01.f:1:64:

           SUBROUTINE CNMN01 (JGOTO,X,DF,G,ISC,IC,A,G1,VLB,VUB,SCAL,C,NCAL,DX
                                                                    1
    Warning: Unused dummy argument ‘c’ at (1) [-Wunused-dummy-argument]
    pyoptsparse/pyCONMIN/source/cnmn01.f:1:53:

           SUBROUTINE CNMN01 (JGOTO,X,DF,G,ISC,IC,A,G1,VLB,VUB,SCAL,C,NCAL,DX
                                                         1
    Warning: Unused dummy argument ‘vlb’ at (1) [-Wunused-dummy-argument]
    gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn03.f
    pyoptsparse/pyCONMIN/source/cnmn01.f:85:0:

           INFO=INF

    Warning: ‘inf’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn04.f
    gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn05.f
    gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn06.f
    gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn07.f
    gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn08.f
    gfortran:f77: pyoptsparse/pyCONMIN/source/cnmn09.f
    f951: Warning: Nonconforming tab character in column 2 of line 31 [-Wtabs]
    pyoptsparse/pyCONMIN/source/cnmn09.f:2:15:

          . N1,N2,N3,N4,N5)
                   1
    Warning: Unused dummy argument ‘n3’ at (1) [-Wunused-dummy-argument]
    pyoptsparse/pyCONMIN/source/cnmn09.f:2:18:

          . N1,N2,N3,N4,N5)
                      1
    Warning: Unused dummy argument ‘n4’ at (1) [-Wunused-dummy-argument]
    pyoptsparse/pyCONMIN/source/cnmn09.f:2:21:

          . N1,N2,N3,N4,N5)
                         1
    Warning: Unused dummy argument ‘n5’ at (1) [-Wunused-dummy-argument]
    gfortran:f77: pyoptsparse/pyCONMIN/source/conmin.f
    gfortran:f77: pyoptsparse/pyCONMIN/source/openunit.f
    x86_64-linux-gnu-gcc-ar: adding 13 object files to build/temp.linux-x86_64-3.6/libconmin.a
    building 'nsga2' library
    compiling C sources
    C compiler: x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC

    creating build/temp.linux-x86_64-3.6/pyoptsparse/pyNSGA2
    creating build/temp.linux-x86_64-3.6/pyoptsparse/pyNSGA2/source
    compile options: '-I/home/rory/.local/lib/python3.6/site-packages/numpy/core/include -c'
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/allocate.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/crossover.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/decode.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/eval.c
    pyoptsparse/pyNSGA2/source/eval.c: In function ‘evaluate_ind’:
    pyoptsparse/pyNSGA2/source/eval.c:25:5: warning: implicit declaration of function ‘nsga2func’; did you mean ‘nsga2’? [-Wimplicit-function-declaration]
         nsga2func (global.nreal, global.nbin, global.nobj, global.ncon, ind->xreal, ind->xbin, ind->gene, ind->obj, ind->constr);
         ^~~~~~~~~
         nsga2
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/dominance.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/fillnds.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/auxiliary.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/crowddist.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/initialize.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/merge.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/nsga2.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/list.c
    pyoptsparse/pyNSGA2/source/nsga2.c: In function ‘nsga2’:
    pyoptsparse/pyNSGA2/source/nsga2.c:312:61: warning: format ‘%i’ expects argument of type ‘int’, but argument 3 has type ‘int *’ [-Wformat=]
        fprintf(fpt5,"\n Number of crossover of real variable = %i",nrealcross);
                                                                ~^
                                                                %ls
    pyoptsparse/pyNSGA2/source/nsga2.c:313:60: warning: format ‘%i’ expects argument of type ‘int’, but argument 3 has type ‘int *’ [-Wformat=]
        fprintf(fpt5,"\n Number of mutation of real variable = %i",nrealmut);
                                                               ~^
                                                               %ls
    pyoptsparse/pyNSGA2/source/nsga2.c:317:63: warning: format ‘%i’ expects argument of type ‘int’, but argument 3 has type ‘int *’ [-Wformat=]
        fprintf(fpt5,"\n Number of crossover of binary variable = %i",nbincross);
                                                                  ~^
                                                                  %ls
    pyoptsparse/pyNSGA2/source/nsga2.c:318:62: warning: format ‘%i’ expects argument of type ‘int’, but argument 3 has type ‘int *’ [-Wformat=]
        fprintf(fpt5,"\n Number of mutation of binary variable = %i",nbinmut);
                                                                 ~^
                                                                 %ls
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/rank.c
    pyoptsparse/pyNSGA2/source/nsga2.c:216:18: warning: ‘nbits’ is used uninitialized in this function [-Wuninitialized]
         global.nbits = nbits;
         ~~~~~~~~~~~~~^~~~~~~
    pyoptsparse/pyNSGA2/source/nsga2.c:219:23: warning: ‘min_binvar’ is used uninitialized in this function [-Wuninitialized]
         global.min_binvar = min_binvar;
         ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
    pyoptsparse/pyNSGA2/source/nsga2.c:220:23: warning: ‘max_binvar’ is used uninitialized in this function [-Wuninitialized]
         global.max_binvar = max_binvar;
         ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
    pyoptsparse/pyNSGA2/source/nsga2.c:332:3: warning: ‘fpt3’ may be used uninitialized in this function [-Wmaybe-uninitialized]
       fclose(fpt3);
       ^~~~~~~~~~~~
    pyoptsparse/pyNSGA2/source/nsga2.c:331:3: warning: ‘fpt2’ may be used uninitialized in this function [-Wmaybe-uninitialized]
       fclose(fpt2);
       ^~~~~~~~~~~~
    pyoptsparse/pyNSGA2/source/nsga2.c:330:3: warning: ‘fpt1’ may be used uninitialized in this function [-Wmaybe-uninitialized]
       fclose(fpt1);
       ^~~~~~~~~~~~
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/mutation.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/sort.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/report.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/tourselect.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyNSGA2/source/rand.c
    x86_64-linux-gnu-gcc-ar: adding 18 object files to build/temp.linux-x86_64-3.6/libnsga2.a
    building 'psqp' library
    compiling Fortran sources
    Fortran f77 compiler: /usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops
    Fortran f90 compiler: /usr/bin/gfortran -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops
    Fortran fix compiler: /usr/bin/gfortran -Wall -g -ffixed-form -fno-second-underscore -Wall -g -fno-second-underscore -fPIC -O3 -funroll-loops
    creating build/temp.linux-x86_64-3.6/pyoptsparse/pyPSQP
    creating build/temp.linux-x86_64-3.6/pyoptsparse/pyPSQP/source
    compile options: '-I/home/rory/.local/lib/python3.6/site-packages/numpy/core/include -c'
    gfortran:f90: pyoptsparse/pyPSQP/source/psqp_wrap.f90
    gfortran:f77: pyoptsparse/pyPSQP/source/mqsubs.f
    gfortran:f77: pyoptsparse/pyPSQP/source/closeunit.f
    gfortran:f77: pyoptsparse/pyPSQP/source/pqsubs.f
    gfortran:f77: pyoptsparse/pyPSQP/source/openunit.f
    gfortran:f77: pyoptsparse/pyPSQP/source/psqp.f
    pyoptsparse/pyPSQP/source/psqp.f:528:5:

     11172 CONTINUE
         1
    Warning: Label 11172 at (1) defined but not used [-Wunused-label]
    pyoptsparse/pyPSQP/source/pqsubs.f:2567:5:

         1 CONTINUE
         1
    Warning: Label 1 at (1) defined but not used [-Wunused-label]
    pyoptsparse/pyPSQP/source/pqsubs.f:2721:5:

         1 CONTINUE
         1
    Warning: Label 1 at (1) defined but not used [-Wunused-label]
    pyoptsparse/pyPSQP/source/pqsubs.f:2964:5:

         1 CONTINUE
         1
    Warning: Label 1 at (1) defined but not used [-Wunused-label]
    pyoptsparse/pyPSQP/source/pqsubs.f:3590:5:

        21 CONTINUE
         1
    Warning: Label 21 at (1) defined but not used [-Wunused-label]
    pyoptsparse/pyPSQP/source/psqp.f:424:0:

               NTESX = NTESX + 1

    Warning: ‘ntesx’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pyPSQP/source/pqsubs.f:2237:0:

           R = RL + (RU-RL)/DEN

    Warning: ‘den’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pyPSQP/source/pqsubs.f:2231:0:

           DEN = 1.0D 0 - B*(1.0D 0/DEN)**3

    Warning: ‘b’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pyPSQP/source/pqsubs.f:2207:0:

           DEN = 2.0D 0*(1.0D 0-A)

    Warning: ‘a’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pyPSQP/source/pqsubs.f:2346:0:

                   DIS = AU + AI - DEN - TWO* (ONE+DIS)

    Warning: ‘au’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pyPSQP/source/pqsubs.f:2346:0: Warning: ‘ai’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    pyoptsparse/pyPSQP/source/pqsubs.f:3247:0:

           CALL MXDPGS(N,H,1.0D0/GAM)

    Warning: ‘gam’ may be used uninitialized in this function [-Wmaybe-uninitialized]
    x86_64-linux-gnu-gcc-ar: adding 6 object files to build/temp.linux-x86_64-3.6/libpsqp.a
    running build_ext
    customize UnixCCompiler
    customize UnixCCompiler using build_ext
    get_default_fcompiler: matching types: '['gnu95', 'intel', 'lahey', 'pg', 'nv', 'absoft', 'nag', 'vast', 'compaq', 'intele', 'intelem', 'gnu', 'g95', 'pathf95', 'nagfor']'
    customize Gnu95FCompiler
    customize Gnu95FCompiler
    customize Gnu95FCompiler using build_ext
    building 'pyoptsparse.pyIPOPT.pyipoptcore' extension
    compiling C sources
    C compiler: x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC

    creating build/temp.linux-x86_64-3.6/pyoptsparse/pyIPOPT
    creating build/temp.linux-x86_64-3.6/pyoptsparse/pyIPOPT/src
    compile options: '-I/home/rory/.local/lib/python3.6/site-packages/numpy/core/include -I/home/rory/IpoptInstall/include/coin-or/ -I/home/rory/.local/lib/python3.6/site-packages/numpy/core/include -I/usr/include/python3.6m -c'
    x86_64-linux-gnu-gcc: pyoptsparse/pyIPOPT/src/callback.c
    x86_64-linux-gnu-gcc: pyoptsparse/pyIPOPT/src/pyipoptcoremodule.c
    In file included from /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/ndarraytypes.h:1822:0,
                     from /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/ndarrayobject.h:12,
                     from /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/arrayobject.h:4,
                     from pyoptsparse/pyIPOPT/src/hook.h:7,
                     from pyoptsparse/pyIPOPT/src/callback.c:36:
    /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
     #warning "Using deprecated NumPy API, disable it with " \
      ^~~~~~~
    In file included from /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/ndarraytypes.h:1822:0,
                     from /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/ndarrayobject.h:12,
                     from /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/arrayobject.h:4,
                     from pyoptsparse/pyIPOPT/src/hook.h:7,
                     from pyoptsparse/pyIPOPT/src/pyipoptcoremodule.c:9:
    /home/rory/.local/lib/python3.6/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
     #warning "Using deprecated NumPy API, disable it with " \
      ^~~~~~~
    pyoptsparse/pyIPOPT/src/pyipoptcoremodule.c: In function ‘set_intermediate_callback’:
    pyoptsparse/pyIPOPT/src/pyipoptcoremodule.c:509:15: warning: variable ‘myowndata’ set but not used [-Wunused-but-set-variable]
      DispatchData myowndata;
                   ^~~~~~~~~
    x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.6/pyoptsparse/pyIPOPT/src/callback.o build/temp.linux-x86_64-3.6/pyoptsparse/pyIPOPT/src/pyipoptcoremodule.o -L/home/rory/IpoptInstall/lib -Lbuild/temp.linux-x86_64-3.6 -lipopt -lcoinmumps -lcoinmetis -ldl -lm -lblas -llapack -o build/lib.linux-x86_64-3.6/pyoptsparse/pyIPOPT/pyipoptcore.cpython-36m-x86_64-linux-gnu.so -Wl,-rpath,/home/rory/IpoptInstall/lib -L/home/rory/IpoptInstall/lib
    /usr/bin/ld: cannot find -lcoinmetis
    collect2: error: ld returned 1 exit status
    error: Command "x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.6/pyoptsparse/pyIPOPT/src/callback.o build/temp.linux-x86_64-3.6/pyoptsparse/pyIPOPT/src/pyipoptcoremodule.o -L/home/rory/IpoptInstall/lib -Lbuild/temp.linux-x86_64-3.6 -lipopt -lcoinmumps -lcoinmetis -ldl -lm -lblas -llapack -o build/lib.linux-x86_64-3.6/pyoptsparse/pyIPOPT/pyipoptcore.cpython-36m-x86_64-linux-gnu.so -Wl,-rpath,/home/rory/IpoptInstall/lib -L/home/rory/IpoptInstall/lib" failed with exit status 1
    ----------------------------------------
  Rolling back uninstall of pyoptsparse
  Moving to /home/rory/.local/bin/optview
   from /tmp/pip-uninstall-32x89xad/optview
  Moving to /home/rory/.local/lib/python3.6/site-packages/pyoptsparse-2.4.1.dist-info/
   from /home/rory/.local/lib/python3.6/site-packages/~yoptsparse-2.4.1.dist-info
  Moving to /home/rory/.local/lib/python3.6/site-packages/pyoptsparse/
   from /home/rory/.local/lib/python3.6/site-packages/~yoptsparse
ERROR: Command errored out with exit status 1: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-07fqkay1/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-07fqkay1/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-juoa8dmt/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/rory/.local/include/python3.6m/pyoptsparse Check the logs for full command output.
ewu63 commented 3 years ago

I have no experience with coinbrew, but this error at least is showing that pyOptSparse is trying to link to the IPOPT library. The error stems from the fact that you do not seem to have METIS installed. If you are using MUMPS without METIS, then you can manually edit the -lcoinmetis flag in the pyIPOPT/setup.py file and try again. Be sure to remove any build artifacts (for example if there's a build directory in the root folder).

ewu63 commented 3 years ago

As another point, OpenMDAO provides a script for installing pyOptSparse with IPOPT and it should work out of the box for you. See here

ghost commented 3 years ago

@nwu63 I removed the coinmetis flag and it installed correctly but still with the same issue in python. I've tried that script before but I tried it again on python3.6 and 3.8 but I have the same issue. The install doesn't appear to be throwing any errors. Still the same error in python.

Thanks for your help by the way.

ewu63 commented 3 years ago

Do you see a file called ipoptcore.so or similar in the pyoptsparse/pyIPOPT directory? This is the Python extension that is used by pyOptSparse to call IPOPT. If it's there, can you try to import it? Get in the python prompt and type import ipoptcore.

ghost commented 3 years ago

No module named ipoptcore, was the error.

In the repository clone there are no files with the .so file extension, although I'm not sure if that's to be expected.

In my site packages here: /home/rory/.local/lib/python3.6/site-packages/pyoptsparse/pyIPOPT I have a file called pyipoptcore.cpython-36m-x86_64-linux-gnu.so

I tried using 'find' on my whole drive to look for ipoptcore.so but couldn't find a file. It's possible I was using the wrong command.

ewu63 commented 3 years ago

Yes it would be in your installed directory, so that's the right file. Can you try to import it in Python? Do you get errors?

ghost commented 3 years ago
>>> import ipoptcore
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'ipoptcore'

rory@rory-MS-7850:~/.local/lib/python3.6/site-packages/pyoptsparse/pyIPOPT$ ls __init__.py __pycache__ pyipoptcore.cpython-36m-x86_64-linux-gnu.so pyIPOPT.py setup.py

Could it be that I have multiple versions of pyoptsparse, one of them without ipoptcore, python3.6 is importing the wrong one? I don't mind nuking my python3 and installing all the packages back it won't take long. Should I do this?

JustinSGray commented 3 years ago

You don't have to nike your whole install. I have seen multiple installs of pyoptspare fight with each other. Here is what I suggest. Open a python interpreter and put the following in:

import pyoptsparse; pyoptsparse.__file__

Whatever location that points to, go delete it. Then open the interpreter again, and do it again. Keep doing it till you get an import error.

One time I found 3 installs....

You may also find this helpful: https://github.com/OpenMDAO/build_pyoptsparse We put together a script to help building ipopt.

ewu63 commented 3 years ago
>>> import ipoptcore
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'ipoptcore'

Did you run this in the folder containing the .so? Usually by default the current directory is on the Python PATH which should at least find the module you are trying to import.

ghost commented 3 years ago

@JustinSGray ah thanks for the trick, yes there was an issue here my python was importing from a different place than all my other packages. I've deleted that and reran the script for building ipopt. But I still seem to have the same issue.

@nwu63 Aha halfway through replying I finally managed to put all the pieces together. By the way import ipoptcore didn't work but import pyipoptcore gave a more promising error message:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libipopt.so.3: cannot open shared object file: No such file or directory

And to get this bit to work I had to export IPOPT_DIR and export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$IPOPT_DIR/lib . Then finally, my code works.

Thanks so much for helping, I've been at this problem for absolutely ages.

Also do I need to do anything to close this issue?

JustinSGray commented 3 years ago

You need to edit your .bashrc file (or the equivalent if you're on a different kind of system) to add that environment variable more permanently.

https://askubuntu.com/questions/58814/how-do-i-add-environment-variables

ewu63 commented 3 years ago

@nwu63 Aha halfway through replying I finally managed to put all the pieces together. By the way import ipoptcore didn't work but import pyipoptcore gave a more promising error message:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libipopt.so.3: cannot open shared object file: No such file or directory

And to get this bit to work I had to export IPOPT_DIR and export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$IPOPT_DIR/lib . Then finally, my code works.

Thanks so much for helping, I've been at this problem for absolutely ages.

Also do I need to do anything to close this issue?

Sorry, yes the command was import pyipoptcore since that's the name of the library. As you figured out, the failure to find libipopt.so is due to the missing entry on the LD_LIBRARY_PATH, and the solution is as Justin mentioned above, by adding an entry in your .bashrc or equivalent. This will make the environment variable persistent across shell sessions.

There's a button on the bottom labelled "Close issue", please do that if you feel the issue has been sufficiently addressed.