Установите Python 2.7.1 бок о бок с поставляемым Apple Python

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

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

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

Ответы

Ответ 1

Если вы не изменили набор пакетов по умолчанию при использовании установщика python.org, введите python из командной строки, чтобы запустить вновь установленный Python 2.7. (Вам нужно будет запустить новый сеанс терминала после запуска установщика, чтобы увидеть это.) Текущие установщики python.org для OS X создают папку в каталоге приложений с именем Python m.n в зависимости от версии Python. Если вы посмотрите в /Applications/Python 2.7, вы увидите файл с именем Update Shell Profile.command. Это оболочка script; вы можете проверить его в редакторе или с помощью 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 [email protected] -> 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 [email protected] -> 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 [email protected] -> 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 [email protected] -> python2.7
lrwxr-xr-x  1 root  admin     16 Nov 30 00:49 [email protected] -> 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 [email protected] -> 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 [email protected] -> 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/[email protected]
/usr/bin/[email protected]         /usr/bin/[email protected]        /usr/bin/pythonw*
/usr/bin/[email protected]         /usr/bin/[email protected] /usr/bin/[email protected]
/usr/bin/python*           /usr/bin/[email protected]        /usr/bin/[email protected]

(Обратите внимание, что в общем случае вам не следует пытаться изменять или удалять файлы в /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)]

Ответ 2

  • Да, он будет работать нормально.
  • Вам нужно будет изменить соответствующую символическую ссылку. Вы всегда можете проверить с помощью which python.
  • Вы можете создать дополнительные символические ссылки для разных версий (например, python_mac и python_standard).
  • Прочитайте этот.

Ответ 3

Различные установки python можно запускать без особых проблем, если вы используете virtualenv

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

Они проинструктируют вас об установке различных версий python в разных местах, каждый из которых имеет свой собственный набор пакетов сайтов, и будет индивидуально работать над разными проектами. Очень рекомендую вам изучить его, так как он также объясняет, как легко изменить переменную 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, поставляемая система python установлена ​​на /System/Library/Frameworks/Python.framework и /usr/bin/python

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

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

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

    • Вы можете вручную удалить папку Python.framework. Вы также можете увидеть Python в папке Applications вместе с другими вещами, такими как 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