Вопрос Установка Biopython


Я установил python-biopython и успешно использовал его в своих сценариях python с чем-то вроде:

import Bio

Но в конечном итоге он перестает работать, и теперь даже после удаления и переустановки я не могу успешно импортировать с помощью python 2.7x. Я получаю следующую ошибку:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named Bio

Запрошенные результаты:

Вывод политики apt-cache python-biopython:

python-biopython:
  Installed: 1.63-1
  Candidate: 1.63-1
  Version table:
 *** 1.63-1 0
        500 http://us.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
        100 /var/lib/dpkg/status

Результат поиска $ (python -c "import sys; print '\ n'.join (sys.path)") -type d -name' Bio ':

find: `/home/alex/anaconda/lib/python27.zip': No such file or directory
find: `/home/alex/anaconda/lib/python2.7/lib-old': No such file or directory

Вывод python -c "import sys; print '\ n'.join (sys.path)" Не отображается, что перечислены biopython:

/home/alex/anaconda/lib/python27.zip
/home/alex/anaconda/lib/python2.7
/home/alex/anaconda/lib/python2.7/plat-linux2
/home/alex/anaconda/lib/python2.7/lib-tk
/home/alex/anaconda/lib/python2.7/lib-old
/home/alex/anaconda/lib/python2.7/lib-dynload
/home/alex/anaconda/lib/python2.7/site-packages
/home/alex/anaconda/lib/python2.7/site-packages/Sphinx-1.3.1-py2.7.egg
/home/alex/anaconda/lib/python2.7/site-packages/cryptography-0.9.1-py2.7-linux-x86_64.egg
/home/alex/anaconda/lib/python2.7/site-packages/setuptools-18.1-py2.7.egg

Вывод политики apt-cache python:

python:
  Installed: 2.7.5-5ubuntu3
  Candidate: 2.7.5-5ubuntu3
  Version table:
 *** 2.7.5-5ubuntu3 0
        500 http://us.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
        100 /var/lib/dpkg/status

3
2017-09-23 17:19


происхождения


редактировать ваш вопрос и добавьте вывод apt-cache policy python-biopython - A.B.
И вывод find $(python -c "import sys; print '\n'.join(sys.path)") -type d -name 'Bio' - A.B.
Пожалуйста, выведите apt-cache policy python - A.B.


ответы:


Я думаю, это проблема с PATH PATH. Вероятно, ваша установка не ищет пакеты в каталоге, где Biopython устанавливает свои файлы.

Шаг 1 - Проверка каталога установки PATH Python и Biopython:

Проверьте настройки PATH Python 2 с помощью следующей команды:

python -c "import sys; print('\n'.join(sys.path))"

Согласно содержимому пакета python-biopython версии 1.64, он установит Bio каталог пакетов в /usr/lib/python2.7/dist-packages/, поэтому, если этот каталог отсутствует в PATH Python, мы заметили причину ошибки.

Шаг 2 - Попытка временного исправления:

Вы можете добавить каталог в переменную Python PATH, установив переменную среды оболочки PYTHONPATH перед запуском переводчика:

PYTHONPATH="/usr/lib/python2.7/dist-packages" python

В этом сеансе Python теперь вы можете использовать пакет Biopython. После того, как вы проверили, что это работает, мы можем продолжить ...

Шаг 3 - Постоянное исправление:

Python имеет один каталог, где он ищет файлы конфигурации пути (*.pth). Мы узнаем, какой каталог находится в вашей установке с помощью команды:

PythonSiteDir=$(python -c "import site; site._script()" --user-site)
echo $PythonSiteDir

Это сначала сохраняет путь в переменной $PythonSiteDir а затем выводит его на терминал. В вашем случае он, вероятно, покажет каталог /home/alex/anaconda/lib/python2.7/site-packages, но если нет, используйте вместо этого соответствующий каталог.

Мы должны разместить наш заказ .pth файл в этот каталог, поэтому сначала мы убеждаемся, что мы не случайно перезаписываем существующий файл, проверяя, какие файлы конфигурации пути уже существуют. Чтобы избежать многократного ввода, мы используем переменную, которую мы создали ранее:

ls ${PythonSiteDir}/*.pth

Все имена файлов, отображаемые этой командой, уже существуют и могут не использоваться. При условии, что biopython_directory.pth не было в списке, мы теперь создадим этот файл и пусть он содержит путь, где Biopython установлен:

echo "/usr/lib/python2.7/dist-packages" > ${PythonSiteDir}/biopython_directory.pth

Это все. Остается только проверить, работает ли это. Вы можете либо просто начать использовать Biopython снова, либо вы можете сначала проверить текущий Python Path с помощью команды сверху:

python -c "import sys; print('\n'.join(sys.path))"

Источник / вдохновение для шага 3: https://stackoverflow.com/a/12311321/4464570


1
2017-09-23 17:47



Использование PYTHONPATH работает, и я могу импортировать Bio правильно сейчас. Но есть ли способ сделать это постоянным, поэтому мне не нужно делать это каждый раз, когда мне нужно использовать биопитон? - The Nightman
Это, вероятно, лучше всего описано в этот ответ от StackOverflow, Я отредактирую свой ответ, чтобы включить эти шаги. - Byte Commander


Я хотел бы ответить как комментарий, но мне нужна репутация, чтобы писать комментарии. Итак, я пишу здесь.

Я использую готовые виртуальные системы qiime. Как я знаю, в этой системе, QIIME использует другой метод настройки пути. В файле «.bashrc» он использует activate.sh как

source /home/qiime/qiime_software/activate.sh

В файле activate.sh вы можете найти строки

export PYTHONPATH=/home/qiime/.../:/home/qiime/.../:
/usr/local/lib/python2.7/dist-packages/`

Вы должны отредактировать файл, добавив «: /usr/local/lib/python2.7/dist-packages/» после путей и снова запустите файл, используя следующую команду

source /home/iime/qiime_software/activate.sh

Я получил решение здесь из вашего вопроса и ответа. Спасибо.


0
2017-10-31 01:44