2014-12-28 3 views
0

Во-первых, извините за плохой английский! Я столкнулся с некоторыми неприятностями во время обновления моего питона. Мой оригинальный mac python 2.7.6 все еще остается прежним. Однако после установки python 2.7.9 в качестве приложения python 2.7.9 стал моим python по умолчанию. То есть, когда я набрал инструкцию python -V, Python 2.7.9 показал. Но те модули, которые я установил, не могут быть импортированы Python 2.7.9. Например, я установил numpy, когда использовал python 2.7.6, но «Нет модуля с именем numpy» показал после установки python 2.7.9. Моя точка зрения заключается в том, как связать приложение python 2.7.9 с этими модулями? Я не удалял orignal mac python, и я хочу исправить эту проблему, не делая этого. Конечно, если удаление оригинального mac python приносит мне пользу, я сделаю это. Спасибо, что помогли мне решить эту проблему.Как обновить mac python без переустановки модулей

+0

Некоторые модули должны быть перекомпилированы для вашей конкретной версии Python. Вот почему они хранятся отдельно. – tripleee

+0

@ tripleee не для изменений в микро версиях. Пакеты, составленные с помощью 2.7.6, будут отлично работать с 2.7.9. – MattDMo

ответ

1

Примечание: следующий ответ предполагается, что вы установили Python 2.7.9 из программы установки, загруженного с python.org. Если вы использовали Homebrew, MacPorts, Anaconda или какой-либо другой дистрибутив, эти инструкции не будут работать.


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

cd /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 

, а затем

ls site-packages 

, чтобы убедиться, что нет ничего в site-packages папке 2.7.9, за исключением более README файла. Затем запустите

sudo rm -rf site-packages 

, чтобы удалить папку. Наконец, мы симлинка его (что я считаю) текущему site-packages местоположения:

sudo ln -s /Library/Python/2.7/site-packages /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages 

и вы должны быть все готовы. Испытайте, произведя стрельбу вверх 2.7.9 и попытавшись, например, import numpy. Он должен работать нормально.

+0

спасибо! что если в пакетах сайта есть easy_install.py (pth) (pyc) (pyo), pkg_resources.py (pyc) (pyo) и setuptools (setuptools-7.0.dist-info)? И мне интересно, совпадают ли оба сайта сайта 2.7.6 и пакеты сайтов 2.7.6? Или сайты сайта 2.7.6 находятся в /System/Frameworks/Python.framework/Versions/2.7/lib/python2.7? –

+0

@AlexChang пакеты 'setuptools' должны быть в порядке, вы можете переустановить их с помощью' pip' (который теперь поставляется с 2.7.9). 'Site-packages' для 2.7.6 и 2.7.9 не являются одинаковыми: для установки python.org 2.7.9' site-packages' находится в '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', а для системной версии Python от Apple - в '/ Library/Python/2.7'. Теперь каталоги, такие как '/ System/Frameworks/Python.framework/Versions/2.7/lib/python2.7', по-прежнему очень важны и, конечно же, должны быть ** не ** удалены, но ни одна из других записей в' sys. path' содержат 'site-packages'. – MattDMo

+0

@AlexChang относительно удаления содержимого '/ Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages' - теперь, когда я думаю об этом, перед удалением каталога полностью введите его и запустите 'sudo mv */Library/Python/2.7/site-packages', чтобы переместить все в другое место. Если запрос запрашивает, вы хотите перезаписать существующие файлы. Затем перейдите в один каталог, удалите 'site-packages', затем создайте символическую ссылку перед повторным использованием' pip'. – MattDMo

-1

PYTHONPATH
Дополните путь поиска по умолчанию для модуля файлов с. Формат такой же, как PATH оболочки: один или несколько каталогов пути, разделенные os.pathsep (например, двоеточия в Unix [или OSX] или точки с запятой в Windows). Необязательные каталоги молча игнорируются.

«Путь поиска по умолчанию для модуля файлов» является список каталогов, которые вы можете увидеть, выполнив следующую строку в Терминале App:

$ python -c "import sys; print sys.path" 

Вы можете установить переменную PYTHONPATH среды в каталог, содержащий старые модули. Вы можете установить переменные среды внутри файла:

~/.bashrc 

Прежде всего, вам нужно выяснить, где находятся старые модули. Если вы установили старую версию python, то они будут расположены примерно здесь:

/Library/Frameworks/Python.каркасные/Версия/2,7/Библиотека/python2.7.6/сайт-пакеты

Если старая версия системы установки питона, то путь к каталогу для старых модулей будут:

/Library/Python/2.7/site-packages 

(кредит для @MattDMo для определения этого пути)

Откройте Finder и следуйте по соответствующему пути, пока не найдете старые модули.

Как только у вас есть путь к старым модулям, отредактируйте файл .bashrc. Откройте приложение терминала (затем, если необходимо, cd в домашний каталог). Затем введите ls -al:

~ $ Ls -al

Смотрите, если .bashrc находится в списке. Если он существует, откройте его в своем любимом текстовом редакторе программ, например.

~ $ ВИМ .bashrc

Если файл .bashrc не существует, то эта команда создаст файл. Затем добавьте следующую строку в нижней части .bashrc:

export PYTHONPATH="/Library/the rest of the path here" 

Примечание: Там не может быть пробелов по обе стороны знака равенства.

Если уже есть строки в .bashrc, которые присваивают к PYTHONPATH, то сделать это вместо:

export PYTHONPATH="/Library/the rest of the path here:$PYTHONPATH" 

Это добавляет каталог к ​​передней части толстой кишки список разделенных каталогов, которые уже были назначены на PYTHONPATH ,

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

+0

Спасибо! У меня есть /System/Library/Frameworks/Python.framework/Versions/2.7/lib , но нет python2.7.6, но libpython2.7.dylib, pkgconfig и python2.7. Что мне делать? –

+0

Я думаю, что вы должны посмотреть в python2.7 для своих старых модулей. – 7stud

+0

Спасибо! Но в моей /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 нет сайтов-пакетов. –

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