Building and Installing¶
Building this module requires that the user have installed the GLPK 4.18 or later, and GMP libraries. The module builds and appears to work on my simple test files in Python 2.4 and 2.5. Earlier versions of Python may not work. I have developed this on both OS X and Linux. I do not know if it will work on Windows.
Here are the brief instructions for installing.
Build the module using
make
. (Pay attention to warnings!)Run
make test
to execute the test suite. You want the last line of output to beTests succeeded!
Build the module using
make install
to install the module in your Python build’ssite-packages
directory. On a typical system, you will need to run this as the superuser (probablysudo make install
).
In the ideal case (that is, you have GLPK and GMP libraries, headers, executables and the like installed in default search paths), this will just work.
Troubleshooting¶
A few details just in case things don’t go that easily:
How PyGLPK builds depends on which version of GLPK is installed. GLPK is an evolving library, and some functionality has been added only since older versions.
Perhaps you don’t have GLPK or GMP installed, or not the development versions with the headers.
Perhaps your
INCLUDE_PATH
,LIBRARY_PATH
, orLD_LIBRARY_PATH
paths are not set correctly.Perhaps you have multiple versions of GLPK on your system in different locations, and it is confusing the system during building. E.g., it may build with one version, and then try to run the program with another.
Perhaps the GLPK library was installed incorrectly. For example, on my Ubuntu box, I cannot build anything with the GLPK installed by my Debian package manager, not even a simple
main { LPX*lp=lpx_create_prob(); lpx_delete_prog(lp); }
, owing to a faulty compile of the libraries.
If You’re Having Trouble Building¶
Below are some suggestions to try or avenues to pursue if you’re having trouble building. This is not an exhaustive list, just “the most likely suspects.”
The build process assumes that the default Python (i.e., the Python you would get if you tried executing
python
withinsh
) is the one for which you want to buildglpk
. If this is untrue, modify theMakefile
file to change the assignmentPYTHON:=python
to something likePYTHON:=/path/to/other/python
.As described earlier, perhaps your environment variable paths are not set correctly. Relevant paths are
INCLUDE_PATH
,LIBRARY_PATH
,LD_LIBRARY_PATH
(yeah, I know).Perhaps you do not actually have a
glpk.h
file in the include directories. This may be because you have a binary non-developer installation of GLPK.Perhaps the
setup.py
script, in its attempt to do something reasonably clever, drew the wrong conclusions about where appropriate libraries and headers may be located, or the version of GLPK. (This may happen in certain situations where there are multiple builds of GLPK floating around with different versions, or your binaries are stored in strange locations.) Withinsetup.py
is a small section beginning withUSERS DO CUSTOM INSTRUCTIONS HERE
where you can override its “cleverness” by manually defining the library name, location of appropriate library and include search directories, and other traits.Multiple versions of GLPK as described earlier. This may be addressed through editing the
setup.py
Faulty installation of GLPK.
If You’re Having Trouble Testing¶
Once you have built the module successfully and there is a glpk.so
symbolic
link defined to the shared library, you should run the principle test suite
through make test
.
If you’re running the test suite through make test
and it throws some sort
of exception, what the problem is depends on what type of error you see.
ImportError: No module named glpk
Ensure that the module actually built.
ImportError: (stuff) Symbol not found
Most likely, it cannot find a required library. Run
ldd glpk.so
(on Linux) orotool -L glpk.so
(on OS X) to see which libraries it cannot find. Use this information to ensure that you environment variableLD_LIBRARY_PATH
points to directories containing appropriate libraries. (Note that merely finding all libraries is not necessarily sufficient in the case where there are multiple GLPK libraries floating around. Ensure you’re not building with one, but running with the other.)AssertionError
(or other error)The good news is that the module appears to load and run and it’s throwing normal Python exceptions. The bad news is one of my tests failed. This should not happen, but if it does, send me a bug report.</dd>
If You’re Having Trouble Installing¶
If it says permission denied when running make install
, perhaps you need to
run the command as the superuser, e.g., sudo make install
.
Uninstalling¶
Like many Python modules, PyGLPK builds itself with the aid of Python’s
included distutils
module. As of the time of this writing, distutils
does not support uninstallation. I am not comfortable with writing my own
solution. Given that this is a potentially destructive option, there may be
unintended, unfortunate consequences on some person’s configuration I did not
anticipate. However, one may still uninstall PyGLPK by importing the glpk
module, and checking the glpk.__file__
attribute. This will tell you where
the module file is stored. Then, you can go to that directory and remove the
module file, and the associated egg-info
file, and rid yourself of PyGLPK.