2016-03-22 5 views
1

Я думал, что использую самую последнюю версию numpy (1.10) По крайней мере, когда я запускаю pip list, я вижу numpy (1.10.4). Однако, когда я получаю в интерпретатор питона и введитеКак остановить numpy_1.8 от маскирования numpy_1.10?

import numpy 
numpy.__version__ 

Я вижу

'1.8.2' 

Я ожидаю, что 1.8.2 был установлен через некоторое время после версии 1.10, потому что я недавно установил некоторые новые пакеты и я теперь, когда я запускаю код, который используется для работы, я получаю эту ошибку:

RuntimeError: module compiled against API version a but this version of numpy is 9 

в OpenCV 2.4.8: module compiled against API version 9 принятый ответ отметил, что команда NumPy относится к версии 1. 8 как numpy версии 9. Итак, я думаю, что изначально я использовал numpy_1.10 и каким-то образом установил numpy_1.8.

Мой первый вопрос: как это произошло и как я могу защититься от него?

Я также хочу знать, как я могу остановить numpy_1.8 от блокировки 1.10. Моя первоначальная мысль заключалась в том, чтобы удалить numpy_1.8 с помощью apt-get, но это устранило бы многие другие пакеты, зависящие от 1.8.

У меня возникнет соблазн просто использовать rm, чтобы избавиться от версии 1.8, но я беспокоюсь, что эти другие пакеты будут затронуты.

Моя вторая мысль - изменить sys.path, чтобы убедиться, что версия 1.10 видна до версии 1.8. Пока я не использую PYTHONPATH. Есть ли способ изменить sys.path, не используя PYTHONPATH? Это разумный подход?

+0

OK - Я полагаю, что использование virtualenv, или Docker, поможет мне, но мне все же нужно выяснить, что делать сейчас. – user1245262

ответ

0

Простейшая задача - удалить установку NumPy 1.8. Посмотрите на numpy.__file__, чтобы узнать, где находится ваша установка 1.8, а затем удалите каталог.

В качестве альтернативы, как вы упомянули, и если вы не хотите удалять 1.8, вы также можете изменить свой путь. Нечто подобное должно сделать это:

import sys 
sys.path.insert(3, '<path_to_your_NumPy_1.10_install>') 

я вставил в положении 3, так что вы храните вещи, как '' в верхней части, но вы можете изменить это по мере необходимости.

+0

Спасибо, но из того, что я могу сказать, это работает только для одного вызова интерпретатора python. Я не хочу вспоминать об этом в любое время, когда загружаю модуль, который нуждается в numpy_1.10 – user1245262

+0

@ user1245262; Каково ваше возражение против первой половины этого решения? – farenorth

+0

Когда я попытался удалить numpy_1.8 с помощью synaptic, он перечислил несколько других пакетов, которые полагаются на numpy_1.8, которые будут удалены. Если я просто использую rm -rf для удаления каталога, в котором живет numpy_1.8, что происходит с пакетами, которые зависят от него? Будет ли поиск numpy_1.10 сам по себе или я установлю каскад пакетов, которые необходимо удалить и переустановить? – user1245262

 Смежные вопросы

  • Нет связанных вопросов^_^