Как переместить старые библиотеки предыдущей версии python в новую версию python - PullRequest
1 голос
/ 24 января 2011

Я использую Ubuntu.Я устанавливаю более новую версию Python.Но все мои установленные библиотеки, такие как imdbPy, NumPy, Cython и т. Д., Могут работать в предыдущей версии python с номером версии 2.6.6.

Когда я импортирую Cython в 2.6.6, tt работает, но я пытаюсь сделать то же самое в 2.7.0+ версии python

import cython

возникает ошибка следующим образом:

import cython
ImportError: No module named cython

Мне нужно изменить версию Python по умолчанию, которая используется в bash.Я думаю, я могу справиться с этим, изменив файл профиля bash.Я также хочу переместить все эти библиотеки в подходящее место, чтобы новая версия python могла постоянно к ним обращаться.

Ответы [ 4 ]

2 голосов
/ 24 января 2011

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

Я устанавливаю вещи в моем домашнем каталоге. Мне нравится jhbuild, так что это то, что я использую для поддержки разных версий Python бок о бок: https://thomas.apestaart.org/thomas/trac/browser/jhbuild/python

Запуск make из этой проверки соберет python 2.3-2.7 и создаст сценарии для входа в их среду:

[thomas@level ~]$ py-2.4 
Entering interactive py shell /bin/bash
[py-2.4] [thomas@level ~]$ python
Python 2.4.5 (#1, Dec 16 2010, 18:51:06) 
[GCC 4.4.4 20100630 (Red Hat 4.4.4-10)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
0 голосов
/ 24 января 2011

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

, прежде чем вносить изменения, отметьте PATH, используя echo $PATH в bash.Каталоги перечислены в порядке их поиска.

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

Например, есливам нужна версия Python в opt/local/bin, а не в usr/local/bin, вы можете установить PATH в вашем .bash_profile или .bashrc файле с такой строкой:

export PATH=opt/local/bin:$PATH

Вы можете проверить путь к файлу Python, который использует bash, с помощью: which python (введено в bash)

Что касается библиотек, убедитесь, что PYTHONPATH в bash и sys.path в pythonустановлены правильно, так что он может найти соответствующие библиотеки и использует обновленные и совместимые версии вместо старых.Вы также можете создавать файлы .pth, содержащие пути к каталогам, которые вы хотите добавить в sys.path, и можете использовать PYTHONSTARTUP в bash для запуска модуля при запуске, который устанавливает sys.path.

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

Если у вас естьболее чем в одном модуле sys.path, использующем одно и то же имя, они могут конфликтовать.

вы можете проверить путь к каталогу импортированного вами модуля python следующим образом:

import Cython
print Cython.__file__

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

0 голосов
/ 24 января 2011

Вам необходимо переустановить все библиотеки для новой версии.

Я бы порекомендовал сначала скачать pip и установить его. После этого вы можете установить большинство пакетов с /path/to/Python27/bin/pip install <packagename>, например

/opt/python27/bin/pip install Cython
0 голосов
/ 24 января 2011

Попробуйте использовать setuptools для переустановки библиотек.На самом деле, я рекомендую переустанавливать вместо того, чтобы пытаться использовать старые версии 2.6 с Python 2.7, так как могут быть некоторые несовместимости.

...