Установите Python 2.7.1 параллельно с Python, поставляемым Apple - PullRequest
12 голосов
/ 16 декабря 2010

Я только что скачал DMG Python 2.7.1 с Python.org . Я видел предложения, чтобы получить ActivePython, но я бы предпочел один из Python.org.

  1. Если я просто запусту установщик mpkg внутри DMG, принимая все значения по умолчанию, будет ли он мирно жить с поставляемым Apple Python?
  2. Если я введу python в Терминале, какой я получу?
  3. В терминале, как мне указать запуск Python от Apple? А как насчет Python, который я сам установил?
  4. Что говорят о настройке PATH при установке другой версии Python? Я понимаю, что установщик Python просто настроит его автоматически. Но я все еще хочу заглянуть под капот. Я знаю, как это сделать в Windows (переменные среды). Для Mac OS X как мне повозиться с PATH?

Я бы тоже мог сначала попробовать это сам, но я новичок в Mac. Python - довольно сложная установка, запись файлов в разные папки и настройка параметров ОС, таких как PATH. TrashMe или AppCleaner могут быть не очень эффективны при удалении Python, если я когда-нибудь захочу вернуться к чистому списку. Поэтому я хочу получить четкое представление о моих вопросах выше.

Ответы [ 3 ]

24 голосов
/ 16 декабря 2010

Если вы не изменили набор пакетов по умолчанию при использовании установщика python.org, при вводе python из командной строки следует запустить только что установленный Python 2.7. (Вам нужно будет начать новый сеанс терминала после запуска установщика, чтобы увидеть это.) Текущие установщики python.org для OS X создают папку в каталоге приложений с именем Python m.n в зависимости от версии Python. Если вы посмотрите в /Applications/Python 2.7, вы увидите файл с именем Update Shell Profile.command. Это сценарий оболочки; Вы можете проверить это в редакторе или с помощью Quicklook. Его целью является изменение файлов запуска для наиболее распространенных программ оболочки в OS X (bash, sh, csh), чтобы обеспечить добавление каталога, в котором расположены исполняемые команды нового Python, в начало список каталогов в переменной окружения PATH, так что команды python в нем будут найдены до того, как будут найдены команды python, поддерживаемые Apple. По умолчанию установщик автоматически запускает для вас Update Shell Profile.command. Это должно привести к примерно так:

$ cat ~/.bash_profile
# .bash_profile
# ... other stuff

# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

Если вы посмотрите в этот каталог, вы должны увидеть что-то вроде этого:

$ ls -l /Library/Frameworks/Python.framework/Versions/2.7/bin
total 272
lrwxr-xr-x  1 root  admin      8 Nov 30 00:49 2to3@ -> 2to3-2.7
-rwxrwxr-x  1 root  admin    140 Nov 30 00:30 2to3-2.7*
lrwxr-xr-x  1 root  admin      7 Nov 30 00:49 idle@ -> idle2.7
-rwxrwxr-x  1 root  admin    138 Nov 30 00:30 idle2.7*
lrwxr-xr-x  1 root  admin      8 Nov 30 00:49 pydoc@ -> pydoc2.7
-rwxrwxr-x  1 root  admin    123 Nov 30 00:30 pydoc2.7*
lrwxr-xr-x  1 root  admin      9 Nov 30 00:49 python@ -> python2.7
lrwxr-xr-x  1 root  admin     16 Nov 30 00:49 python-config@ -> python2.7-config
-rwxrwxr-x  1 root  admin  33764 Nov 30 00:31 python2.7*
-rwxrwxr-x  1 root  admin   1663 Nov 30 00:31 python2.7-config*
lrwxr-xr-x  1 root  admin     10 Nov 30 00:49 pythonw@ -> pythonw2.7
-rwxrwxr-x  1 root  admin  33764 Nov 30 00:31 pythonw2.7*
lrwxr-xr-x  1 root  admin     11 Nov 30 00:49 smtpd.py@ -> smtpd2.7.py
-rwxrwxr-x  1 root  admin  18586 Nov 30 00:30 smtpd2.7.py*

Новый питон доступен как команда python2.7, но есть символическая ссылка на него как python. Поскольку среда PATH была изменена:

$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

когда вы набираете python в качестве команды в оболочке, эта символическая ссылка будет найдена первой перед поставляемой Apple python в /usr/bin одной из директорий, где установлены системные пользовательские команды (как в ОС X 10,6):

$ ls /usr/bin/py*
/usr/bin/pydoc*            /usr/bin/python-config*    /usr/bin/python2.6-config@
/usr/bin/pydoc2.5@         /usr/bin/python2.5@        /usr/bin/pythonw*
/usr/bin/pydoc2.6@         /usr/bin/python2.5-config@ /usr/bin/pythonw2.5@
/usr/bin/python*           /usr/bin/python2.6@        /usr/bin/pythonw2.6@

(Обратите внимание, что в общем случае вы не должны пытаться изменять или удалять файлы в /usr/bin, поскольку они являются частью OS X и управляются Apple.)

Есть много способов управлять несколькими установками Python в OS X; проверьте архивы или сеть. Следует иметь в виду, что вы всегда можете использовать абсолютный путь к нужной команде python для проверки. Таким образом, с измененным путем, как указано выше, вы должны увидеть следующее поведение:

$ /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 -c 'import sys;print(sys.version)'
2.7.1 (r271:86882M, Nov 30 2010, 09:39:13) 
[GCC 4.0.1 (Apple Inc. build 5494)]
$ python2.7 -c 'import sys;print(sys.version)'
2.7.1 (r271:86882M, Nov 30 2010, 09:39:13) 
[GCC 4.0.1 (Apple Inc. build 5494)]
$ python -c 'import sys;print(sys.version)'
2.7.1 (r271:86882M, Nov 30 2010, 09:39:13) 
[GCC 4.0.1 (Apple Inc. build 5494)]
$ /usr/bin/python -c 'import sys;print(sys.version)'
2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)]
$ /usr/bin/python2.6 -c 'import sys;print(sys.version)'
2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)]
4 голосов
/ 16 декабря 2010
  1. Да, он будет работать нормально.
  2. Вам нужно будет изменить соответствующую символическую ссылку. Вы всегда можете проверить, используя which python.
  3. Вы можете создать дополнительные символические ссылки для разных версий (например, python_mac и python_standard).
  4. Читать это .
1 голос
/ 19 июня 2012

Различные установки Python могут выполняться специально без помех, если вы используете virtualenv

Вы можете следовать этой статье о

  1. самозагрузка виртуальных сред
  2. настройка экосистем Python

Они проинструктируют вас об установке разных версий python в разных местах, каждый со своим набором site-пакетов, и заставят их индивидуально работать в разных проектах. Настоятельно рекомендуем ознакомиться с ним, поскольку он также объясняет, как легко изменить переменную PATH, чтобы с помощью команд оболочки можно было найти различные установки python.

Вот краткая информация о том, куда идут различные установки Python ..

Набрав на терминале which python, вы узнаете свое местоположение. Вы также можете использовать python -V для просмотра используемой версии. Помните, python и python2.x могут быть разными вещами. Вы можете назначить соответствующие имена различным установкам Python, чтобы вызывать их в терминале или в ваших скриптах, используя команду alias. Например,

alias /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 sys-py27
  • Системный питон, поставляемый Apple, установлен в /System/Library/Frameworks/Python.framework и /usr/bin/python

    • Действительно, вы не должны связываться с ними, пытаясь удалить их вручную. Системный питон может использоваться другим программным обеспечением на вашем компьютере.
    • Чтобы проверить, какой в ​​данный момент системный питон вы можете использовать

      python -c 'import sys;print(sys.version)'

  • Пакетные установщики, которые вы загружаете и запускаете, обычно устанавливаются в /Library/Frameworks/Python.framework/Versions/2.7/bin/

    • Вы можете вручную удалить папку Python.framework. Вы также можете увидеть Python в папке «Приложения» вместе с другими вещами, такими как IDLE, AppBuilder и PythonLauncher. Вы можете просто удалить их, если нужно.
  • MacPorts установит python или что-то вроде python26 и python27 в /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/

    • Вы можете удалить их, используя обычный sudo port uninstall packageName, и если вы хотите удалить зависимости, используйте что-то вроде этого кода

      sudo port uninstall python27 --follow-dependents installed

    • Все дополнительные вещи, как numpy, scipy, PIL, opencv и т. Д., Которые вы пытаетесь установить с помощью port, перейдут на

      /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

...