Изменение Biopython включает путь для компиляции во время установки pip

Я пытаюсь установить Biopython (пакет python), используя PIP на моей рабочей машине (OpenSuse x86_64).

Все идет хорошо, пока он не попытается сделать некоторую компиляцию, используя пустые заголовки

gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -fPIC -I/usr/lib64/python2.7/site-packages/numpy/core/include -I/usr/include/python2.7 -c Bio/Cluster/clustermodule.c -o build/temp.linux-x86_64-2.7/Bio/Cluster/clustermodule.o

В какой момент это не удается

Bio/Cluster/clustermodule.c:2:31: fatal error: numpy/arrayobject.h: No such file or directory

Это потому что numpy/arrayobject.h в

/usr/local/lib64/python2.7/site-packages/numpy/core/include/

и не

/usr/lib64/python2.7/site-packages/numpy/core/include 

Есть ли способ обновить любую переменную, которая устанавливает путь включения (в /local версия), либо глобально, либо явно для этой установки?

ОБНОВИТЬ

Через год я столкнулся с аналогичной проблемой, за исключением .h файлы просто не существовали в моей системе. Просто копируя .h с другой машины в

/usr/lib64/python2.7/site-packages/numpy/core/include/numpy

установка каталога прошла нормально.

1 ответ

Решение

Благодаря @Bort я обнаружил, что это, по-видимому, известная ошибка (установка локального / пользовательского пространства все равно не работала).

Редактируя Биопайтон setup.py файл в следующих местах

оригинал

#Add extensions that requires NumPy to build
if is_Numpy_installed():
   import numpy
   numpy_include_dir = numpy.get_include()
   EXTENSIONS.append(
      Extension('Bio.Cluster.cluster',
              ['Bio/Cluster/clustermodule.c',
               'Bio/Cluster/cluster.c'],
              include_dirs=[numpy_include_dir],
              ))
   EXTENSIONS.append(
      Extension('Bio.KDTree._CKDTree',
              ["Bio/KDTree/KDTree.c",
               "Bio/KDTree/KDTreemodule.c"],
              include_dirs=[numpy_include_dir],
              ))
   EXTENSIONS.append(
      Extension('Bio.Motif._pwm',
              ["Bio/Motif/_pwm.c"],
              include_dirs=[numpy_include_dir],
              ))

обновленный

#Add extensions that requires NumPy to build
if is_Numpy_installed():
   import numpy
   numpy_include_dir = numpy.get_include()
   EXTENSIONS.append(
      Extension('Bio.Cluster.cluster',
              ['Bio/Cluster/clustermodule.c',
               'Bio/Cluster/cluster.c'],
              include_dirs=[numpy_include_dir, '/usr/local/lib64/python2.7/site-packages/numpy/core/include/'],
              ))
   EXTENSIONS.append(
      Extension('Bio.KDTree._CKDTree',
              ["Bio/KDTree/KDTree.c",
               "Bio/KDTree/KDTreemodule.c"],
              include_dirs=[numpy_include_dir, '/usr/local/lib64/python2.7/site-packages/numpy/core/include/'],
              ))
   EXTENSIONS.append(
      Extension('Bio.Motif._pwm',
              ["Bio/Motif/_pwm.c"],
              include_dirs=[numpy_include_dir, '/usr/local/lib64/python2.7/site-packages/numpy/core/include/'],
              ))

Затем с помощью pip для установки из источника (я снова сжал папку с обновленным setup.py файл в нем то побежал)

pip install recompressed.tar.gz

и он установлен и готов к работе.

Обновление У меня действительно была очень похожая проблема с этим на другом компьютере openSUSE, но на этот раз у меня не было никаких включаемых файлов... Чтобы обойти это, я скопировал их из исходного кода и загрузил их, используя обновление include_dirs выше.

Другие вопросы по тегам