I am looking to change the version of Python used when loading PythonInR. Currently, when I load the library, I receive:
Initialize Python Version 2.6.6 (r266:84292, Aug 9 2016, 06:11:56) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]
I need to use version 2.7.13 that I have setup:
$ python Python 2.7.13 (default, Apr 12 2017, 06:53:51) [GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux2
When loading the library in Linux, the default python is loaded. How do I change the python version that is started? Is there another command other than pyConnect() to use in Linux? How does PythonInR determine which version of Python to use?
Comments (3)
-
repo owner -
Thanks. We did as you suggested, but encounter this exception and the build does not complete:
gcc -m64 -std=gnu99 -shared -L/usr/lib64/R/lib -o PythonInR.so CToR.o CastPyObjects.o CastRObjects.o GetPyObjects.o PyCall.o PyRunString.o PythonFunctions.o PythonInR.o Python_Explicit_Linking.o SetPyObjects.o -lpython2.7 -lpthread -ldl -lutil -lm -Xlinker -export-dynamic -L/usr/lib64/R/lib -lR /usr/bin/ld: /usr/local/lib/libpython2.7.a(getbuildinfo.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC /usr/local/lib/libpython2.7.a: could not read symbols: Bad value
Any ideas?
-
I was able to track down the issue. It has to do with having multiple version of python, and according to this site https://stackoverflow.com/questions/16986952/how-to-ignore-local-python-when-building-python-from-source there is an issue with setup.py script. Additionally, this site https://stackoverflow.com/questions/22990769/libpython-error-while-building-youcompleteme suggested adding a link to libpython2.7.so from the python location from /usr/lib.
- Log in to comment
In Linux the python version is always determined at the installation, essentially PythonInR always uses the python version you get when you type python into the terminal.
The system variable USESPECIALPYTHONVERSION can be used to link to a special python version.
Either do e.g.
or
When
USESPECIALPYTHONVERSION
is defined it sets a new alias in the configure script.But when you change the version you have to ensure that also the appropriate
pythonXY-dev
are installed e.g.