Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python pip specify a library directory and an include directory

I am using pip and trying to install a python module called pyodbc which has some dependencies on non-python libraries like unixodbc-dev, unixodbc-bin, unixodbc. I cannot install these dependencies system wide at the moment, as I am only playing, so I have installed them in a non-standard location. How do I tell pip where to look for these dependencies ? More exactly, how do I pass information through pip of include dirs (gcc -I) and library dirs (gcc -L -l) to be used when building the pyodbc extension ?

like image 287
Cricri Avatar asked Sep 13 '13 09:09

Cricri


People also ask

How do I change the default pip directory?

Click on the Advanced system settings link on the left panel. Click Environment Variables. Under System Variables, double-click the variable PATH. Click New, and add the directory where pip is installed, e.g. C:Python\Scripts, and select OK.


1 Answers

pip has a --global-option flag

You can use it to pass additional flags to build_ext.
For instance, to add a --library-dirs (-L) flag:
pip install --global-option=build_ext --global-option="-L/path/to/local" pyodbc

gcc supports also environment variables: http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html

I couldn't find any build_ext documentation, so here is the command line help

Options for 'build_ext' command:   --build-lib (-b)     directory for compiled extension modules   --build-temp (-t)    directory for temporary files (build by-products)   --plat-name (-p)     platform name to cross-compile for, if supported                        (default: linux-x86_64)   --inplace (-i)       ignore build-lib and put compiled extensions into the                        source directory alongside your pure Python modules   --include-dirs (-I)  list of directories to search for header files                        (separated by ':')   --define (-D)        C preprocessor macros to define   --undef (-U)         C preprocessor macros to undefine   --libraries (-l)     external C libraries to link with   --library-dirs (-L)  directories to search for external C libraries                        (separated by ':')   --rpath (-R)         directories to search for shared C libraries at runtime   --link-objects (-O)  extra explicit link objects to include in the link   --debug (-g)         compile/link with debugging information   --force (-f)         forcibly build everything (ignore file timestamps)   --compiler (-c)      specify the compiler type   --swig-cpp           make SWIG create C++ files (default is C)   --swig-opts          list of SWIG command line options   --swig               path to the SWIG executable   --user               add user include, library and rpath   --help-compiler      list available compilers 
like image 183
Thorfin Avatar answered Oct 20 '22 03:10

Thorfin