Как мне установить pybel таким образом, чтобы моя среда python распознала его?
На Chemistry Stack Exchange я задал вопрос о совместном использовании Open Babel и Python.
Проблема в том, что ответ, который мне дал (Джефф Хатчинсон), требует, чтобы Python мог импортировать модуль Pybel.
Я установил Open Babel на этот компьютер двумя способами: APT и source. Затем я удалил установку APT после того, как понял, что pybel недоступен для использования с Python, и решил установить из исходного кода с привязками Python.
Для этого я следовал этому руководству, настроив последнюю команду ~/build)
cmake ../openbabel-2.3.2 -DBUILD_GUI=ON -DPYTHON_BINDINGS=ON
который дал вывод:
-- Using included inchi library.
-- Found wxWidgets: TRUE
-- Cairo found. PNG output will be supported.
-- Attempting to build the GUI
-- wxWidgets found => GUI will be built
CMake Warning (dev) at test/CMakeLists.txt:171 (include):
Syntax Warning in cmake code at
/home/fusion809/Downloads/openbabel-2.3.2/cmake/modules/UsePythonTest.cmake:54:14
Argument not separated from preceding token by whitespace.
This warning is for project developers. Use -Wno-dev to suppress it.
CMake Warning (dev) at test/CMakeLists.txt:171 (include):
Syntax Warning in cmake code at
/home/fusion809/Downloads/openbabel-2.3.2/cmake/modules/UsePythonTest.cmake:54:31
Argument not separated from preceding token by whitespace.
This warning is for project developers. Use -Wno-dev to suppress it.
CMake Warning (dev) at test/CMakeLists.txt:171 (include):
Syntax Warning in cmake code at
/home/fusion809/Downloads/openbabel-2.3.2/cmake/modules/UsePythonTest.cmake:57:25
Argument not separated from preceding token by whitespace.
This warning is for project developers. Use -Wno-dev to suppress it.
CMake Warning (dev) at test/CMakeLists.txt:171 (include):
Syntax Warning in cmake code at
/home/fusion809/Downloads/openbabel-2.3.2/cmake/modules/UsePythonTest.cmake:57:39
Argument not separated from preceding token by whitespace.
This warning is for project developers. Use -Wno-dev to suppress it.
-- Python bindings will be compiled
-- Could NOT find Ruby (missing: RUBY_INCLUDE_DIR RUBY_LIBRARY RUBY_CONFIG_INCLUDE_DIR) (found version "2.1.0")
-- Ruby library files NOT found. Ruby bindings will NOT be compiled.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/fusion809/build
Однако я должен отметить, что когда я впервые скомпилировал Open Babel, я забыл добавить -DBUILD_GUI & -DPYTHON_BINDINGS команды для строки cmake, поэтому мне пришлось запустить эту новую команду cmake после того, как я изначально скомпилировал программное обеспечение. Это имеет какое-то значение? Должен ли я удалить Open Babel и перекомпилировать? Если это так, я должен удалить некоторые файлы в моем /usr/ каталог (если так, пожалуйста, укажите их, поскольку я не знаю, какие из них)? Если актуально, я нахожусь на 32 бит 15.04.
РЕДАКТИРОВАТЬ
Я удалил содержимое моего каталога сборки и снова запустился, и после команды cmake я выполнил:
make
sudo make install
export PYTHONPATH=/usr/local/lib:$PYTHONPATH
В конце вывода я получил эти две строки:
-- Up-to-date: /usr/local/lib/openbabel.py
-- Up-to-date: /usr/local/lib/pybel.py
В терминале Python я бегал import openbabel а также import pybel и это дало вывод: ImportError: No module named ... где ... Это openbabel или pybel, в зависимости от того, какие из команд были выполнены, поэтому я подозреваю, что это проблема в конце моей установки Python.
2 ответа
Без python-openbabel:
% python
Python 2.7.9 (default, Apr 2 2015, 15:33:21)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import openbabel
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named openbabel
>>>
% python
Python 2.7.9 (default, Apr 2 2015, 15:33:21)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pybel
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named pybel
>>>
устанавливать python-openbabel:
sudo apt-get install python-openbabel
Проверьте:
% python
Python 2.7.9 (default, Apr 2 2015, 15:33:21)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import openbabel
>>>
% python
Python 2.7.9 (default, Apr 2 2015, 15:33:21)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pybel
>>>
У меня была та же проблема, и я понял, что я использую дистрибутив Python (Anaconda), отличный от оригинала (который предоставлен Ubuntu). Ниже приведен потенциальный обходной путь (если это так).
После установки python-openbabel с помощью apt-get проверьте его с помощью предоставленного системой python (в моем случае /usr/bin/python). Вы должны быть в состоянии импортировать openbabel:
% /usr/bin/python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import openbabel
>>>
Я пытался использовать easy_install предоставлена Anaconda для установки openbabel & pybel, но она не удалась. Затем я скопировал *openbabel* а также *pybel* файлы в /usr/lib/python2.7/dist-packages/ в папку, которая PYTHONPATH видит и все работало нормально. Я был бы признателен, если бы у кого-нибудь был более хороший (более чистый) способ заставить Anaconda использовать пакет, установленный для системного python.
(Я хотел прокомментировать ответ, но из-за отсутствия репутации я не смог)