I am having trouble installing the Python package rpy2. I have already compiled R as a shared library, but I do not have admin priviledges so I am trying to install rpy2 with:
pip install -user rpy2
However, I am getting the following error:
./rpy/rinterface/_rinterface.c:86:31: fatal error:
readline/readline.h: No such file or directory
compilation terminated.
error: command 'gcc' failed with exit status 1
I have downloaded readline to:
/some/path/readline-6.2/
where I can see readline.h (I have also compiled readline just in case)
My question:
How can I make rpy2 (or pip) aware of this location with readline.h to avoid the header compilation error?
You'll need to actually install readline, not just download it, and then point rpy2 to it with CFLAGS and LDFLAGS.
Try this approach. It's almost working for me - I have the same problem, except an additional wrinkle that rpy2 seems to be linking against the system R instead of my homedir install.
First, I downloaded readline to ~/src/readline-6.2, and installed it with ./configure --prefix=$HOME && make && make install. (You need to install it somewhere, not just download the source.)
Then I re-compiled R with
CPPFLAGS="-I/usr/local/include -I$HOME/include/" \
LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib -L$HOME/lib64 -L$HOME/lib" \
./configure --prefix=$HOME --enable-BLAS-shlib --enable-R-shlib
make
make install
R is definitely now using that readline:
$ ldd ~/lib64/R/lib/libR.so | grep readline
libreadline.so.6 => /home/dsutherl/lib/libreadline.so.6 (0x00007f8104207000)
The same for my in-home install of Python (3.2.3, since h5py doesn't work with 3.3 yet):
CFLAGS="-I/usr/local/include -I$HOME/include/" \
LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib -L$HOME/lib64 -L$HOME/lib" \
./configure --prefix=$HOME
make
make install
And again:
$ ldd ~/lib/python3.2/lib-dynload/readline.cpython-32m.so | grep readline
libreadline.so.6 => /home/dsutherl/lib/libreadline.so.6 (0x00007fbfff5c2000)
Then I downloaded the rpy2 source and built that:
CFLAGS="-I/usr/local/include -I$HOME/include/" \
LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib -L$HOME/lib64 -L$HOME/lib" \
python3 setup.py build --r-home $HOME/lib64/R install
This seemed successful, and ldding the .sos in site-packages/rpy2 links to the right libreadline...but to the system R, instead of mine, despite the explicit --r-home.
more simple :
yum install readline-devel.x86_64
run for me on centos 7
for debian/ubuntu
apt-get install libreadline-dev
Sometime in linux is needed an sudo apt-get upgrade, to get the news libraries, may work
This is another option, but too you need root privilegies ...
sudo apt-get install libreadline-dev
Related
I'm trying to install PyOpenCL on Ubuntu 16.04, but getting the following error:
/usr/bin/ld: cannot find -lOpenCL
collect2: error: ld returned 1 exit status
error: command 'c++' failed with exit status 1
How can I solve this issue?
Thanks.
You need to install: ocl-icd-opencl-dev
apt-get install ocl-icd-opencl-dev
You can check what was actually installed with that package running:
$ dpkg -L ocl-icd-opencl-dev
which should return something along these lines:
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/ocl-icd-opencl-dev
/usr/share/doc/ocl-icd-opencl-dev/copyright
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/pkgconfig
/usr/lib/x86_64-linux-gnu/pkgconfig/OpenCL.pc
/usr/share/doc/ocl-icd-opencl-dev/changelog.Debian.gz
/usr/lib/x86_64-linux-gnu/libOpenCL.so # <--- this is the important bit
Bonus
If you get a complaint about missing headers, e.g CL/cl.h, then you should install:
apt-get install opencl-headers.
Don't forget to install specific OpenCL drivers for your platform. You could be running against an Intel CPU/GPU, an AMD or NVidia graphics card or even an FPGA.
A good way of checking everything is well setup, is to run clinfo which will show useful information about available platforms (apt-get install clinfo).
Based on this page, it seems that I had to only run this command on my bash for the error to be removed:
apt-get install python-pyopencl
I was fiddling around with Fedora, trying to uninstall a python Module. I couldn't find the one that I was looking for , so the half linux-primate brain thought of an Idea , to execute this.
sudo rm -rf /usr/lib/python3.5/site-packages/
It did it's thing , and only after that I realized how stupid I was. DNF and YUM depends on it and whenever I execute DNF i get
Traceback (most recent call last):
File "/usr/bin/dnf", line 57, in <module>
from dnf.cli import main
ImportError: No module named 'dnf'
And when I execute YUM
Redirecting to '/usr/bin/dnf ' (see 'man yum2dnf')
Traceback (most recent call last):
File "/usr/bin/dnf", line 57, in <module>
from dnf.cli import main
ImportError: No module named 'dnf'
The only thing that Works is yum-deprecated. Everything else is in turmoil.
So how do I fix this ?
Purging the Site-Packages directory of Python3 removes a lot of the libraries that Fedora needs to function properly. This means tools like dnf and yum does not work.
These are the Steps that I took to fix this.
Step 1: Install yum-deprecated. Just type yum-deprecated on the terminal and it will ask do you want to install it. Type y and it will be installed.
Step 2: Run this Bash Command
rpm -qa | egrep "^python3" | sed ':a;N;$!ba;s/\n/ /g' | xargs sudo yum-deprecated reinstall -y
This finds all the names of the Installed python 3 packages , and reinstall them.
Note to Myself: Never run commands like sudo rm -rf /usr/lib/python3.5/site-packages/ ever again.
Use 'rpm -Va' to identify the packages with missing files. You'll then have to download the matching RPM files from a Fedora mirror, and then use rpm --reinstall to fix those.
The higher-level dnf and yum packages rely on Python, so they're likely to just be broken. Fortunately, the lower-level rpm command doesn't, so if python packages are all you've removed, this should get you back in shape.
You basically removed a lot of python files. A large portion of the system depends on the python, including dnf itself, which is written in python.
The best thing to do would be to back up all your files and reinstall system. If yum-deprecated still works, you might have the luck with reinstalling dnf:
yum-deprecated reinstall "dnf*"
but most probably you will need much more packages to take through the same procedure.
This can help.
yum update python*
yum install dnf-data dnf-plugins-core libdnf-devel libdnf python2-dnf-plugin-migrate dnf-automatic
I have a friend who meet the same problem.
He tries to uninstall python3.7 in linux server by some amazing cmd rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps and whereis python3 |xargs rm -frv.
This cause the yum and dnf broken.
Because we can not find yum-deprecated,so there are the following attempt.
I change the /usr/bin/yum to use a local python3.8 version, but it cause ModuleNotFoundError: No module named 'dnf' at last, and not solved it.
It is not a good way to download many rpm packages in internet. And I can't use yum either. But I have another same os linux server, so I tried to copy the correlation files about python3.7.
$ rpm -ql python3-3.7.0-9.h4.eulerosv2r8.aarch64> py.log
$ while read -r line;do dirname $line |xargs -I {} ssh root#$remoteip "mkdir -p {}" ;scp $line root#$remoteip:$line ;done<py.log
$ rpm -ql python3-libs-3.7.0-9.h4.eulerosv2r8.aarch64 >pylib.log
$ while read -r line;do dirname $line |xargs -I {} ssh root#$remoteip "mkdir -p {}" ;scp $line root#$remoteip:$line ;done<pylib.log
scp -r /usr/lib/python3.7/site-packages root#$remoteip:/usr/lib/python3.7/
I recover yum by this way.
I am running python 2.7 in Ubuntu 14.04 and have installed the python-pyo package, but when I import the pyo module I get the following error:
ImportError: /usr/lib/python2.7/dist-packages/_pyo.so: undefined symbol: jack_port_register
It seems like I must have screwed up the jack libraries on my system somehow, but I can't figure out what is broken.
[~/Downloads/pyo-read-only]$ ldconfig -p|grep jack
libjack.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libjack.so.0
libjack.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libjack.so
[~/Downloads/pyo-read-only]$ objdump -tT /usr/lib/x86_64-linux-gnu/libjack.so.0|grep jack_port_register
000000000000a3a0 g DF .text 00000000000001a1 Base jack_port_register
I have tried building python-pyo from scratch but I get the same error. If I build it without --use-jack, I get a segmentation fault when I try to boot a server.
I had this problem. It was fixed by ensuring I had the correct packages installed.
From http://ajaxsoundstudio.com/pyodoc/compiling.html
sudo apt-get install libjack-jackd2-dev libportmidi-dev portaudio19-dev liblo-dev
sudo apt-get install libsndfile-dev python-dev python-tk
sudo apt-get install python-imaging-tk python-wxgtk3.0
I was able to get a bit further by manually adding -ljack to the setup.py and building from source.
Getting this error:
sudo: unable to resolve host coderw#ll
-- Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:108
(message):
Could NOT find PythonInterp (missing: PYTHON_EXECUTABLE)
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:315
(_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-2.8/Modules/FindPythonInterp.cmake:139
(FIND_PACKAGE_HANDLE_STANDARD_ARGS)
Code/cmake/Modules/FindNumPy.cmake:10 (find_package)
CMakeLists.txt:114 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/coderwall/Desktop/rdkit/build/CMakeFiles/CMakeOutput.log".
See also "/home/coderwall/Desktop/rdkit/build/CMakeFiles/CMakeError.log".
I have already installed:
sudo apt-get install python-dev
Environment variable are already set as follow:
PYTHON_INCLUDE_DIRS=/usr/include/python2.7
PYTHON_LIBRARIES=/usr/lib/python2.7/config/libpython2.7.so
Location of python.h : /usr/lib/include/python2.7/python.h
Location of python libs: /usr/lib/python2.7/
How to solve this?
You can fix the errors by appending to the cmake command the -DPYTHON_LIBRARY and -DPYTHON_INCLUDE_DIR flags filled with the respective folders.
Thus, the trick is to fill those parameters with the returned information from the python interpreter, which is the most reliable. This may work independently of your python location/version (also for Anaconda users):
$ cmake .. \
-DPYTHON_INCLUDE_DIR=$(python -c "import sysconfig; print(sysconfig.get_path('include'))") \
-DPYTHON_LIBRARY=$(python -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))")
If the version of python that you want to link against cmake is Python3.X and the default python symlink points to Python2.X, python3 -c ... can be used instead of python -c ....
In case that the error persists, you may need to update the cmake to a higher version as stated by #pdpcosta and repeat the process again.
For me this is helpful:
# if using python2
apt-get install python-dev
# if using python3
apt-get install python3-dev
I hit the same issue,and discovered the error message gives misleading variable names. Try setting the following (singular instead of plural):
PYTHON_INCLUDE_DIR=/usr/include/python2.7
PYTHON_LIBRARY=/usr/lib/python2.7/config/libpython2.7.so
The (plural) variables you see error messages about are values that the PythonLibs sets up when it is initialised correctly.
Even after adding -DPYTHON_INCLUDE_DIR and -DPYTHON_LIBRARY as suggested above, I was still facing the error Could NOT find PythonInterp. What solved it was adding -DPYTHON_EXECUTABLE:FILEPATH= to cmake as suggested in https://github.com/pybind/pybind11/issues/99#issuecomment-182071479:
cmake .. \
-DPYTHON_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
-DPYTHON_LIBRARY=$(python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))") \
-DPYTHON_EXECUTABLE:FILEPATH=`which python`
I was facing this problem while trying to compile OpenCV 3 on a Xubuntu 14.04 Thrusty Tahr system.
With all the dev packages of Python installed, the configuration process was always returning the message:
Could NOT found PythonInterp: /usr/bin/python2.7 (found suitable version "2.7.6", minimum required is "2.7")
Could NOT find PythonLibs (missing: PYTHON_INCLUDE_DIRS) (found suitable exact version "2.7.6")
Found PythonInterp: /usr/bin/python3.4 (found suitable version "3.4", minimum required is "3.4")
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES) (Required is exact version "3.4.0")
The CMake version available on Thrusty Tahr repositories is 2.8.
Some posts inspired me to upgrade CMake.
I've added a PPA CMake repository which installs CMake version 3.2.
After the upgrade everything ran smoothly and the compilation was successful.
Some last version of Ubuntu installs Python 3.4 by default and the CMake version from Ubuntu (2.8) only searches up to Python 3.3.
Try to add set(Python_ADDITIONAL_VERSIONS 3.4) before the find_package statement.
Remember to clean CMakeCache.txt too.
This problem can also happen in Windows. Cmake looks into the registry and sometimes python values are not set. For those with similar problem:
http://ericsilva.org/2012/10/11/restoring-your-python-registry-in-windows/
Just create a .reg file to set the necessary keys and edit accordingly to match your setup.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Python]
[HKEY_CURRENT_USER\Software\Python\Pythoncore]
[HKEY_CURRENT_USER\Software\Python\Pythoncore\2.6]
[HKEY_CURRENT_USER\Software\Python\Pythoncore\2.6\InstallPath]
#="C:\\python26"
[HKEY_CURRENT_USER\Software\Python\Pythoncore\2.6\PythonPath]
#="C:\\python26;C:\\python26\\Lib\\;C:\\python26\\DLLs\\"
[HKEY_CURRENT_USER\Software\Python\Pythoncore\2.7]
[HKEY_CURRENT_USER\Software\Python\Pythoncore\2.7\InstallPath]
#="C:\\python27"
[HKEY_CURRENT_USER\Software\Python\Pythoncore\2.7\PythonPath]
#="C:\\python27;C:\\python27\\Lib\\;C:\\python27\\DLLs\\"
Note that if you are using cMake version 3.12 or later, variable PythonInterp and PythonLibs has been changed into Python.
So we use:
find_package(Python ${PY_VERSION} REQUIRED)
instead of:
find_package(PythonInterp ${PY_VERSION} REQUIRED)
find_package(PythonLibs ${PY_VERSION} REQUIRED)
see https://cmake.org/cmake/help/v3.12/module/FindPython.html for details.
I had upgraded to python3.8 on my system and had an incomplete install. Managed to fix it by installing the rest of the 3.8 packages:
sudo apt-get install python3.8 python3.8-dev python3.8-distutils python3.8-venv
Paste this into your CMakeLists.txt:
# find python
execute_process(COMMAND python-config --prefix OUTPUT_VARIABLE PYTHON_SEARCH_PATH)
string(REGEX REPLACE "\n$" "" PYTHON_SEARCH_PATH "${PYTHON_SEARCH_PATH}")
file(GLOB_RECURSE PYTHON_DY_LIBS ${PYTHON_SEARCH_PATH}/lib/libpython*.dylib ${PYTHON_SEARCH_PATH}/lib/libpython*.so)
if (PYTHON_DY_LIBS)
list(GET PYTHON_DY_LIBS 0 PYTHON_LIBRARY)
message("-- Find shared libpython: ${PYTHON_LIBRARY}")
else()
message(WARNING "Cannot find shared libpython, try find_package")
endif()
find_package(PythonInterp)
find_package(PythonLibs ${PYTHON_VERSION_STRING} EXACT)
In case that might help, I found a workaround for a similar problem, looking at the cmake doc :
https://cmake.org/cmake/help/v3.0/module/FindPythonLibs.html
You must set two env vars for cmake to find coherent versions.
Unfortunately this is not a generic solution...
cmake -DPYTHON_LIBRARY=${HOME}/.pyenv/versions/3.8.0/lib/libpython3.8.a -DPYTHON_INCLUDE_DIR=${HOME}/.pyenv/versions/3.8.0/include/python3.8/ cern_root/
In Python 3.2 and onward distutils.sysconfig is deprecated in favor of sysconfig.
To get all the variable names in data structure and inspect the situation we can use get_paths function
import sysconfig
sysconfig.get_paths()
which will return us a dict with all the relevant variable names as keys, and corresponding paths as values.
When we know the key we can get the value dynamically,
>>> sysconfig.get_path("include")
'C:\\Program Files\\Python310\\Include'
However, the most convenient feature of sysutils for this situation is that it can list all the variables at once from the command-prompt by invoking python -m sysconfig:
$ python -m sysconfig
Platform: "macosx-10.4-i386"
Python version: "3.2"
Current installation scheme: "posix_prefix"
Paths:
data = "/usr/local"
include = "/Users/tarek/Dev/svn.python.org/py3k/Include"
platinclude = "."
platlib = "/usr/local/lib/python3.2/site-packages"
platstdlib = "/usr/local/lib/python3.2"
purelib = "/usr/local/lib/python3.2/site-packages"
scripts = "/usr/local/bin"
stdlib = "/usr/local/lib/python3.2"
Variables:
AC_APPLE_UNIVERSAL_BUILD = "0"
AIX_GENUINE_CPLUSPLUS = "0"
AR = "ar"
ARFLAGS = "rc"
...
Maybe below command line works for you if all of above methods didn't work.
sudo apt-get install cython cython3
On Ubuntu 20 at least, since Python 2.7 is deprecated, you can:
sudo apt install python2.7-dev
And then PYTHON_INCLUDE_DIR can be set to /usr/include/python2.7
I am new to Python. I have Python2.6 running now. I am following the Tutorial on the Python site. My question is when I try to follow the instructions here:
http://py-psycopg.darwinports.com/
I get something like...
sudo port install py-psycopg
... bunch of errors here...
Error: The following dependencies failed to build: py-mx python24
I am running MacOS X 10.4.
How do i make this work?
Any reply would be greatly appreciated.
UPDATE:
After running the code below I get the errors below:
$ sudo port install py26-psycopg2
Warning: Skipping upgrade since openssl 0.9.8k_0 >= openssl 0.9.8k_0, even though installed variants "" do not match "+darwin". Use 'upgrade --enforce-variants' to switch to the requested variants.
Warning: Skipping upgrade since readline 6.0.000_1 >= readline 6.0.000_1, even though installed variants "" do not match "+darwin". Use 'upgrade --enforce-variants' to switch to the requested variants.
---> Computing dependencies for py26-psycopg2
---> Building python26
Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_lang_python26/work/Python-2.6.2" && /usr/bin/make all MAKE="/usr/bin/make CC=/usr/bin/gcc-4.0" " returned error 2
Command output: /usr/bin/install -c -d -m 755 Python.framework/Versions/2.6
if test ""; then \
/usr/bin/gcc-4.0 -o Python.framework/Versions/2.6/Python -dynamiclib \
-isysroot "" \
-all_load libpython2.6.a -Wl,-single_module \
-install_name /opt/local/Library/Frameworks/Python.framework/Versions/2.6/Python \
-compatibility_version 2.6 \
-current_version 2.6; \
else \
/usr/bin/libtool -o Python.framework/Versions/2.6/Python -dynamic libpython2.6.a \
-lSystem -lSystemStubs -install_name /opt/local/Library/Frameworks/Python.framework/Versions/2.6/Python -compatibility_version 2.6 -current_version 2.6 ;\
fi
ld64 failed: in libpython2.6.a(__.SYMDEF), not a valid ppc64 mach-o file
/usr/bin/libtool: internal link edit command failed
make: *** [Python.framework/Versions/2.6/Python] Error 1
Error: The following dependencies failed to build: python26
Error: Status 1 encountered during processing.
FYI, the python i installed was the dmg file from the pythong site.
Thanks,
Wenbert
If you're using Python 2.6, you actually want to build py26-psycopg2:
$ sudo port install py26-psycopg2
In MacPorts, py-* packages build using Python 2.4, py25-* using Python 2.5, and py26-* use Python 2.6.
Maybe you need to look at the version for Python 2.6?
I had problems installing psycopg2 on my 10.4 Mac too. I installed both Python and Postgres from dmg files, and sudo easy_install psycopg2 was giving an error I can't remember now. What worked for me was an easy solution:
PATH=$PATH:/Library/PostgreSQL/8.3/bin/ sudo easy_install psycopg2
which I've found at http://blog.jonypawks.net/2008/06/20/installing-psycopg2-on-os-x/
I installed psycopg2 on my Mac with setuptools and easy_install. First get the Python 2.6 egg from the setuptools downloads page, then install it with the instructions on that page. Then you can run the following to install it:
sudo easy_install psycopg2
You may have different luck, but that's what did it for me.
I tried everything and nothing works. At least this post:
http://benkreeger.com/post/312303245/conquering-symbol-not-found-pqbackendpid
led me to homebrew which made it perfectly.