Как обновить Python вместе с установленными пакетами?
Если я устанавливаю несколько пакетов с Python 2.6 (например, используя easy_install
) и затем я хочу обновить до Python 2.7, есть ли способ обновить Python, а затем автоматически "импортировать" все эти установленные пакеты вместе с ним? Или их надо переустанавливать?
Два связанных вопроса: (1) если пакет установлен в каталоге пакетов Python 2.6, то законно ли импортировать его в PYTHONPATH
более нового Python, такого как Python 2.7, или все пакеты должны быть переустановлены с Python 2.7? (2) если я использую easy_install
Как я могу сказать, чтобы использовать более новый Python? Например, 2,7 вместо 2,6? Или мне просто переустановить easy_install
используя Python 2.7 для этого? Благодарю.
1 ответ
Во-первых, это одна из многих причин, по которым вы хотите использовать pip
вместо easy_install
, (Вам все еще нужно easy_install
получить pip
сам по себе, но кроме того, не трогай его никогда.) Если бы вы использовали pip
Вы могли бы просто сделать это:
pip freeze > modules.dump
Это дает вам список всех установленных модулей и номера их версий. Большую часть времени вы можете просто взять список модулей (line.split('==')[0] for line in f
) и передать его pip install
,
Но это для дальнейшего использования. На сегодняшний день вы должны собрать это вместе, просматривая ваши site-packages
каталог. К счастью, многие вещи в конечном итоге foo_bar-1.2.3.4-blah-blah.egg
так что все, что вам нужно сделать, это угадать, назван ли пакет foo-bar
или же foo_bar
в PyPI, и, как правило, даже если вы догадались, easy_install
или же pip
все равно получит правильную вещь. Таким образом, вы не можете автоматизировать это, но вы можете подобраться ближе.
Но да, как бы вы это ни делали, вам нужно переустановить. Все, что требует кода расширения C, должно быть перекомпилировано. Пакеты Pure-Python, возможно, не нужно менять, но они могут, и вы в большей безопасности, чем потом сожалеете. Кроме того, если вы попытаетесь скопировать некоторые вещи, но не другие, вы сильно запутаете свои зависимости.
(1) если пакет установлен в каталоге пакетов Python 2.6, законно ли импортировать его в PYTHONPATH более нового Python, такого как Python 2.7, или все пакеты должны быть переустановлены с Python 2.7?
Не делай этого; переустановите их, как описано выше.
(2) если я использую easy_install, как я могу сказать ему использовать более новый Python? Например, 2,7 вместо 2,6? Или я должен просто переустановить easy_install, используя Python 2.7, чтобы сделать это? Благодарю.
Вам нужны 2,7 easy_install
, Обычно вы можете использовать 2,7 easy_install
с помощью 2.6, например, python2.6 $(which easy_install)
, но наоборот не гарантированно работать.
И ты все равно не хочешь этого делать. Если вы хотите две версии Python параллельно, вы хотите две версии easy_install
- как правило, вы хотите в конечном итоге easy_install-2.6
а также easy_install-2.7
, с easy_install
в качестве символической ссылки на тот, который вы считаете своим "основным" питоном.