Ошибка установки scikits.audiolab при использовании python setup.py egg_info
Я пытаюсь установить scikits.audiolab с помощью инструмента pip. Пип появляется для запуска команды python setup.py egg_info
из исходного каталога scikits.audiolab. Когда это происходит, я получаю эту ошибку:
Andrews-MacBook-Pro-2:scikits.audiolab-0.11.0 andrewhannigan$ pip install scikits.audiolab
Collecting scikits.audiolab
Using cached scikits.audiolab-0.11.0.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 20, in <module>
File "/private/var/folders/xb/qwlsm44s1wxfr82kytrgjtl80000gn/T/pip-build-vSZaU8/scikits.audiolab/setup.py", line 32, in <module>
from numpy.distutils.core import setup
ImportError: No module named numpy.distutils.core
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/xb/qwlsm44s1wxfr82kytrgjtl80000gn/T/pip-build-vSZaU8/scikits.audiolab
Проблема заключается в том, что он не может импортировать numpy.distutils.core
, Глядя на скрипт setup.py, этот импорт происходит в самом начале (внизу фрагмента ниже):
#! /usr/bin/env python
# Last Change: Fri Mar 27 05:00 PM 2009 J
# Copyright (C) 2006-2007 Cournapeau David <cournape@gmail.com>
#
# This library is free software; you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the Free
# Software Foundation; either version 2.1 of the License, or (at your option) any
# later version.
#
# This library is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License along
# with this library; if not, write to the Free Software Foundation, Inc., 51
# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# TODO:
# - check how to handle cmd line build options with distutils and use
# it in the building process
from os.path import join
import os
import sys
# The following is more or less random copy/paste from numpy.distutils ...
import setuptools
from distutils.errors import DistutilsError
from numpy.distutils.core import setup
Странная часть заключается в том, что если я просто запускаю приведенный выше фрагмент сценария setup.py через python setup.py
Я не получаю ошибку импорта. Как работает egg_info
Аргумент командной строки влияет на способ запуска setup.py и почему он вдруг делает невозможным импорт из python numpy.distutils.core
?
1 ответ
Там проблема в scikits.audiolab
"s setup.py
файл. Посмотрите на https://github.com/cournape/audiolab/blob/master/setup.py:
import os
# The following is more or less random copy/paste from numpy.distutils ...
import setuptools
from numpy.distutils.core import setup
Самое первое, что он делает, это импорт из numpy
, Если numpy
не установлен, это гарантированно завершится с ошибкой импорта вы поделились.
Я подозреваю, что между неудачной попыткой установки и успешной установкой вы установили numpy вручную с pip install numpy
, Вряд ли egg_info
имел какое-либо отношение к этому.
Вот демонстрация того, как обойти эту проблему, взяты из scipy
принадлежность проекта setup.py
:
def setup_package():
...
build_requires = []
try:
import numpy
except:
build_requires = ['numpy']
metadata = dict(
...
setup_requires = build_requires,
install_requires = build_requires,
)