Несколько версий python при установке пакета с способностью

На лабораторной машине, где я не могу просто сбиваться с толку, возможно, установлено более одной версии python.

Если я python -version, я вижу 2.7.1.

Я установил numpy через «apt-get install numpy», и он говорит, что он установлен, но когда я пытаюсь его импортировать, он не найден.

Когда я нахожусь на машине для numpy, я вижу ее в папке /usr/lib/python2.5/site-packages/numpy. Я предполагаю, что это проблема … что apt-get поместил ее в версию 2.5 вместо 2.7.

Как это разрешить? Есть ли способ сказать apt-get, с каким python я говорю, когда я делаю установку? Или я отказываюсь от способности и использования пипса или чего-то еще?

    Если вы хотите использовать несколько версий python на одной машине, вам следует исследовать virtualenv .

    virtualenv – это инструмент для создания изолированной среды Python.

    Основная проблема, которая решается, – это одна из зависимостей и версий, а также косвенные разрешения. Представьте, что у вас есть приложение, которое нуждается в версии 1 LibFoo, но для другого приложения требуется версия 2. Как вы можете использовать оба этих приложения? Если вы установите все в /usr/lib/python2.7/site-packages (или независимо от стандартного местоположения вашей платформы), легко оказаться в ситуации, когда вы непреднамеренно обновляете приложение, которое не нужно обновлять.

    Или, в общем, что, если вы хотите установить приложение и оставить его? Если приложение работает, любое изменение в его библиотеках или версиях этих библиотек может разорвать приложение.

    Кроме того, что делать, если вы не можете устанавливать пакеты в каталог глобальных пакетов сайтов? Например, на общем хосте.

    Во всех этих случаях virtualenv может вам помочь. Он создает среду, в которой есть свои собственные каталоги установки, которые не обмениваются библиотеками с другими виртуальными средами (и, возможно, также не получают доступ к глобально установленным библиотекам).

    Вот вопрос с аналогичным решением .

    Кроме того, я использую virtualenvwrapper, потому что считаю, что жизнь намного облегчает управление несколькими средами.

    Хороший, стандартный и простой способ установки модулей python – это pip

    с этим вы устанавливаете пакет с командой (в терминале не в оболочке python)

    pip install <packagename>

    (с привилегиями root)

    Он заботится о зависимостях.

    Обработка нескольких версий python:

    Я не знаю, является ли это стандартной практикой или нет, но я делаю это так.

    Чтобы установить пакет на версию 2.5, я делаю,

    python2.5 /usr/bin/pip install <packagename>

    Ubuntu по умолчанию имеет несколько версий python (например, 2,4, 2,6, 2,7, 3,2 и т. Д.),

    В вашем случае, если вы не хотите устанавливать numpy на python2.7 (вы должны IMO :)), и вы нормально работаете с python2.5, вы можете использовать numpy, запустив python2.5

    
         $ python2.5
    
         >>> import numpy
         >>>
    
    

    РЕДАКТИРОВАТЬ:

    Если вы используете apt-get install , пакет будет установлен в системной версии python по умолчанию.

    Apt / dpkg имеют Debian способ управления несколькими установленными версиями Python (я считаю, что он называется поддержкой python). Любой дополнительный пакет, например numpy, который вы устанавливаете, будет автоматически создан и доступен для всех версий Python, поддерживаемых этим пакетом и установленным dpkg. Поскольку numpy поддерживает каждый Python, ваша информация сообщает мне, что единственный пакет python для Debian в вашей системе равен 2,5, а 2.7 в вашем PATH, вероятно, находится в / usr / local. Когда вы устанавливаете пакет numpy, он не знает о локально построенном 2.7. Вы всегда можете легко установить.

    Предложение использовать virtualenv является хорошим. У меня есть производственная система, поддерживающая использование python 2.5, которая была удалена из debian unstable; virtualenv позволяет работать с любой версией, в которой вы нуждаетесь. SInce python необходим многим инструментам, поэтому лучше оставить системный python на любом Debian.

    Debian позволяет устанавливать несколько Pythons (пакеты python2.5 и python2.6 ). Библиотека Python, такая как numpy в пакете python-numpy может поддерживать несколько из них, но определенные библиотеки, установленные через диспетчер пакетов, не обязательно поддерживаются на всех этих устройствах. Вы можете использовать apt-cache show python-numpy | grep Python-Version apt-cache show python-numpy | grep Python-Version чтобы увидеть, какие версии поддерживаются. Если 2.7 не поддерживается, вам нужно будет установить из источника или (например) pip, easy_install и т. Д.

    Однако у вас может быть локальная установка Python 2.7 (скомпилирована и установлена ​​из источников за пределами репозиториев). Ваш дистрибутив звучит немного устаревшим (в Linux Mint 12 поддерживается только 2,6 и 2,7 для numpy), так что, возможно, официальных пакетов для Python 2.7 нет. Если вы выполняете which python и он находится в /usr/local или где-либо еще, кроме /usr/bin , то у вас есть локальная установка, и вам нужно будет установить пакет с помощью source или easy_install и друзей.

    Тем не менее, я считаю, что если вам просто нужны эти библиотеки для разработки, вы должны держать их в песочнице (например, virtualenv ) в своем домашнем каталоге. Таким образом, у вас есть лучший контроль над точной версией.