Подтвердить что ты не робот

Объясните, почему numpy не следует импортировать из исходного каталога

Отказ от исследования:

Я рассмотрел следующие вопросы StackOverflow:

Возможно, некоторым кто-то может ответить на мой вопрос, но, по моим сведениям, я до сих пор не понимаю ситуацию.

Я пытаюсь импортировать numpy, чтобы matplotlib работал, но после выполнения файла __init__.py в папке numpy отображается следующее сообщение об ошибке:

ImportError: Error importing numpy: you should not try to import numpy from
    its source directory; please exit the numpy source tree, and relaunch
    your python intepreter from there.

Объясните, что значит импортировать что-то из его исходного каталога, а не какой-либо другой способ его импорта. Означает ли это, что он не должен быть исходным кодом при импорте? Или это означает, что это буквально просто неправильный каталог/папка, которую я импортирую. Я знаю, что еще один ответ StackOverflow:

Сообщение достаточно понятно; ваш рабочий каталог не должен быть исходным каталогом numpy при вызове Python; numpy должен быть установлен, и ваш рабочий каталог должен быть чем угодно, кроме каталога, в котором он живет.

Однако я этого не понимаю. Разве вы не должны импортировать вещи, с которыми хотите работать? Я предполагаю, что команда import объединяет исходный каталог в ваш текущий рабочий каталог в этом выражении.

Я также прочитал другие ответы, например:

  • Использование distutils для установки локальных каталогов

  • Использование virtualenv для создания виртуального системного каталога

  • Используя Enthought EPD, чтобы иметь предустановленный набор numpy в том, что я считаю системным каталогом, и

  • Использование команды типа $ dpkg -i --force-not-root --root=$HOME mypackagename.deb для создания того, что я считаю, является своего рода подсистемным каталогом, который рассматривается как системный каталог.

Итак, исправьте меня, если я ошибаюсь, но нужно ли каким-то образом numpy как-то установить в основной системный каталог?

Состояние машины:

Я использую машины Windows без административных привилегий. У них есть Python 3.3 Shell, а также matplotlib. При запуске командной строки python и python3 не распознаются. Мне нужно запустить оболочку Python из меню приложений. Я могу успешно импортировать matplotlib из даже моего собственного каталога, отличного от своего, но он останавливается после достижения __init__.py модуля numpy, если он существует, и сообщает об ошибке, указанной выше.

Обновление:

К счастью, мои администраторы смогли прямо установить numpy правильно в папке site-packages. Спасибо, что ответили на мой вопрос. Я понимаю ситуацию намного больше из-за вас.

4b9b3361

Ответ 1

numpy включает модули расширения, написанные на C. Вам нужно будет создать эти модули расширения до завершения пакета numpy. Самый надежный способ сделать это - построить его и установить его на site-packages, как обычно. Вы также можете установить его в другой каталог, используя стандартные параметры distutils для этого. Однако, как только вы его установили, вы должны изменить свою директорию из исходного дерева. Python начинает искать пакеты в вашем текущем каталоге, поэтому сначала будет доставлен пакет неполных numpy (без необходимых встроенных модулей расширения C) и приведет к ошибке, которую вы укажете. Это происходит очень часто, поэтому мы даем длинное сообщение, объясняющее, что делать.