2014-06-11 3 views
23

Erste um diesen Fehler zu finden:Cmake ist nicht in der Lage Python-Bibliotheken

sudo: unable to resolve host [email protected] 
-- 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". 

Ich habe bereits installiert ist:

  1. sudo apt-get install python-dev
  2. variable Umwelt sind bereits wie folgt einstellen:

    PYTHON_INCLUDE_DIRS=/usr/include/python2.7 
    PYTHON_LIBRARIES=/usr/lib/python2.7/config/libpython2.7.so 
    

Lage python.h: /usr/lib/include/python2.7/python.h

Lage python Libs: /usr/lib/python2.7/ Wie dieses Problem zu lösen?

+0

Hmmm, versuchen Einstellung 'PYTHON_EXECUTABLE = ...'? – nitekrawler

+0

Versucht und es erkannt, aber immer noch: 'konnte PythonLibs nicht finden (fehlende: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)' –

+0

Könnten Sie bitte den Code der Rdkit-Wurzel CMakeLists.txt Datei zu Ihrer Frage hinzufügen? Das könnte helfen. –

Antwort

5

Einige letzte Version von Ubuntu installiert standardmäßig Python 3.4 und die CMake-Version von Ubuntu (2.8) sucht nur bis zu Python 3.3.

Versuchen Sie set(Python_ADDITIONAL_VERSIONS 3.4) vor der find_package Anweisung hinzuzufügen.

Denken Sie daran, auch CMakeCache.txt zu reinigen.

3

Für mich war hilfreich nächste:

> apt-get install python-dev python3-dev 
+0

Für mich (auf Centos7) löste diese Zeile das Problem: 'yum installieren python34-devel' – Agnis

12

ich das gleiche Problem betroffen, und entdeckt die Fehlermeldung irreführend Variablennamen gibt. Versuchen Sie, die folgenden (Singular statt Plural) Einstellung:

PYTHON_INCLUDE_DIR=/usr/include/python2.7 
PYTHON_LIBRARY=/usr/lib/python2.7/config/libpython2.7.so 

Die (Plural) Variablen, die Sie sehen Fehlermeldungen über Werte, die die PythonLibs einrichtet, wenn es richtig initialisiert wird.

+0

das funktionierte für mich. DANKE – mcku

+0

Ich bin erstaunt ... guter Job das herauszufinden! – Silmathoron

+0

Dies muss wirklich in der Dokumentation für opencv-Installationen erwähnt werden. Außerdem könnten sie ein wenig hilfreicher sein, um die verfügbaren CMake-Optionen beim Erstellen aus der Quelle zu erklären. http://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html –

14

Ich war mit diesem Problem konfrontiert, als ich versuchte, OpenCV 3 auf einem Xubuntu 14.04 Thrusty Tahr System zu kompilieren. Mit all den dev-Paketen von Python installiert, der Konfigurationsprozess immer zurückkehrt die Meldung:

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") 

Die CMake Version auf Thrusty Tahr Repositories ist 2.8. Einige Beiträge inspirierten mich, CMake zu aktualisieren. Ich habe ein PPA CMake Repository hinzugefügt, das CMake Version 3.2 installiert.

Nach dem Upgrade lief alles reibungslos und die Kompilierung war erfolgreich.

+3

gelöst von update cmake zu 3.4 – rookiepig

+0

Und vergessen Sie nicht alle cmake Caches zuerst zu reinigen! – acgtyrant

7

Dieses Problem kann auch in Windows auftreten. Cmake schaut in die Registrierung und manchmal sind Python-Werte nicht gesetzt. Für diejenigen mit ähnlichen Problem:

http://ericsilva.org/2012/10/11/restoring-your-python-registry-in-windows/

Erstellen Sie einfach eine REG-Datei die notwendigen Schlüssel zu setzen und bearbeiten entsprechend Ihrem Setup übereinstimmen.

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\\" 
14

Sie können die Fehler beheben, indem Sie die -DPYTHON_LIBRARY und -DPYTHON_INCLUDE_DIR Flaggen mit den entsprechenden Ordner gefüllt mit dem cmake Befehl angehängt wird.

Der Trick besteht also darin, diese Parameter mit den zurückgegebenen Informationen aus dem Python-Interpreter zu füllen, der am zuverlässigsten ist. Dies kann unabhängig von Ihrer Python Standort/Version (auch für Anaconda Benutzer) arbeiten:

$ 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'))") 

Wenn die Version von Python, die Sie gegen Cmake verknüpfen möchten ist Python3.X und die Standard-Python Symlink auf Python2.x , python3 -c ... kann anstelle von python -c ... verwendet werden.

Falls der Fehler weiterhin auftritt, müssen Sie möglicherweise den cmake auf eine höhere Version aktualisieren, wie von @pdpcosta angegeben, und den Vorgang erneut durchführen.

+0

print (sysconfig.get_config_var ('LIBDIR'))“ Drucke/opt/Conda/lib, aber dann bekomme ich WARNUNG: Ziel "etwas-was" -Anfragen Anbindung an das Verzeichnis "/ opt/Conda/lib". Ziele können nur mit Bibliotheken verknüpfen. CMake ist das Löschen des Elements. - müssen wir -DPYTHON_LIBRARY den Pfad zum .so libpython geben? –

+1

@ Mr.WorshipMe Ja, ich habe den Befehl geändert, um den Pfad zu der .so wie folgt: '-DYPTHON_LIBRARY = $ (python -c" importieren distutils.sysconfig als sysconfig; import os; print (os.path.join (sysconfig.get_config_var ('LIBDIR'), sysconfig.get_config_var ('LDLIBRARY'))) ")' – kgully

+0

Für Anaconda insbesondere funktionierte dies für mich (und wird hoffentlich leichter verallgemeinern): http s: //github.com/jkhoogland/FindPythonAnaconda (obwohl ich zwei kleine Änderungen vornehmen musste - sie sind beide in meinem GitHub-Fork, wenn der Upstream auch nicht für dich funktioniert) –

0

Auch nach dem Hinzufügen von -DPYTHON_INCLUDE_DIR und -DPYTHON_LIBRARY wie oben vorgeschlagen, war ich immer noch auf den Fehler Could NOT find PythonInterp. Was es gelöst wurde das Hinzufügen -DPYTHON_EXECUTABLE:FILEPATH= zu cmake wie in https://github.com/pybind/pybind11/issues/99#issuecomment-182071479 vorgeschlagen:

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` 
Verwandte Themen