Несколько версий Python при установке пакета с aptitude - PullRequest
3 голосов
/ 23 января 2012

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

Если я Python - версия, я вижу 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 я говорю, когда делаю установку? Или я отказываюсь от способности и использую pip или что-то еще?

Ответы [ 4 ]

4 голосов
/ 23 января 2012

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

virtualenv - инструмент для создания изолированных сред Python.

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

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

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

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

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

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

2 голосов
/ 23 января 2012

Хороший, стандартный и простой способ установки модулей 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
    >>>

EDIT:

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

1 голос
/ 23 января 2012

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

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

0 голосов
/ 23 января 2012

Debian позволяет устанавливать несколько Pythons (пакеты python2.5 и python2.6).Библиотека Python, такая как numpy в пакете python-numpy, может поддерживать несколько таких библиотек, но определенные библиотеки, установленные через менеджер пакетов, не обязательно поддерживаются во всех них.Вы можете использовать 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 и друзей.

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

...