Изменение 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 выше.