5

Я знаю, что есть варево и варочные косточки, но запутаться все равно очень легко. Допустим, у меня Mac OS X 10.7.2.

  • Насколько я знаю, есть как минимум 3 места для модулей Python (предположим, 2.7):
    1. /System/Library/Frameworks/Python.framework/Versions/2.7/
    2. /Library/Python/2.7/site-packages
    3. /usr/local/lib/python2.7/site-packages/ (контролируется в рамках homebrew)
  • Для некоторых модулей Python, установите pip в 2, так называемое локальное / настраиваемое расположение модуля Python, и все выглядит и работает отлично. Например, readline от easy_install (ipython предложил мне установить readline с помощью easy_install вместо pip)
  • Для некоторых он попытается установить несколько разных файлов (ex, man, doc, ...) в общесистемное расположение, что требует sudo ! Например, ipython настаивал на установке man и doc в /System/Library/Frameworks/Python.framework/Versions/2.7/share/, что нарушает проблему с разрешениями, и все, что я могу сделать, - это использовать sudo.
  • Для некоторых модулей Python, установленных brew, они символически связаны с /usr/local/lib/python2.7/site-packages/. Все кажется великолепным, за исключением того, что вы должны помнить, чтобы добавить это место в PYTHONPATH.

Мне интересно, какой бы ни был предложенный и унифицированный способ справиться с этой массой, или любое объяснение, чтобы сделать эти вещи кристально ясными.

2 ответа2

3

Может быть, пришло время подумать об использовании virtualenv. Virtualenv создает автономные среды Python, используя указанную вами версию Python. После активации новой виртуальной среды все, что вы устанавливаете с помощью pip, попадает в эту среду. Это помогает избежать ситуаций, подобных той, которую вы описали.

Например, создайте и активируйте новую среду Python, используя Python по умолчанию:

# create environment
$ virtualenv --distribute myproject
New python executable in myproject/bin/python
Installing distribute...done.
Installing pip...done.

# activate environment
$ . ./myproject/bin/activate

# check default python
(myproject)$ which python
/Users/me/myproject/bin/python

Рекомендуется использовать параметры --distribute , чтобы указать, что дистрибутив должен использоваться для установки пакетов в новой среде вместо (более старых) setuptools. После активации ваша командная строка изменится, чтобы указать, какая среда Python активна.

Теперь установите пакет. Файлы перейдут в каталог myproject:

# install django
(myproject)$ pip install django
...

# search for django dir
(myproject)$ find myproject -iname django
myproject/lib/python2.7/site-packages/django

Наконец, деактивируйте:

# deactivate and check for default python
(myproject)$ deactivate
$ which python
/usr/bin/python

Чтобы создать среду с использованием нестандартной версии python:

$ virtualenv --distribute -p /path/to/custom/python mynewproject

По умолчанию virtualenv будет копировать в новую среду все пакеты, установленные для версии Python, которую вы используете для начальной загрузки. Чтобы предотвратить это и создать пустую среду, используйте параметр --no-site-packages . Это особенно полезно для создания сред, которые могут быть точно воспроизведены, например, от разработки до производства.

Обновление: Начиная с версии 1.7 --no-site-packages стал поведением по умолчанию для virtualenv.

Если вы хотите получить более подробную информацию, есть много учебных пособий и сообщений в блоге онлайн. Например:

  1. Заметки по использованию pip и virtualenv с Django. (большая часть поста не специфична для django)
  2. Работаем с virtualenv.

Попробуйте, и я уверен, что вы будете придерживаться этого.

Примечание: убедитесь, что ваши исполняемые скрипты не имеют жестко запрограммированного интерпретатора Python. Т.е. их первая строка должна быть #!/usr/bin/env python а не что-то вроде #!/usr/bin/python .

0

Мои предложения:

  1. Установите пакет инструментов командной строки xcode через Xcode -> Настройки -> Загрузки-> Компоненты: Xcode

  2. Установить доморощенного (обновить свой путь в .profile или что-то еще, чтобы включить /usr/local/bin до системного значения по умолчанию (например, /usr/bin).

  3. Для Python сначала установите все предварительные требования самостоятельно:

    • brew install readline sqlite gdbm pkg-config
    • brew install python --framework --universal
    • обновите ваш путь так, чтобы он использовал правильные distutils: export PATH=/usr/local/share/python:$PATH
  4. easy_install pip

  5. pip install virtualenv
  6. pip install virtualenvwrapper
  7. Включить export PYTHONPATH=/usr/local/lib/python:$PYTHONPATH

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .