Установите Pypy (или другой Python), чтобы быть основным Python

Я хочу заменить CPython (Python) по умолчанию на pypy (1.8).

Это вызовет проблемы? (Я спрашиваю, потому что Python кажется важным компонентом в Ubuntu.).

Я собрал pypy и установил его на виртуальной машине Ubuntu (я проверяю эту идею, прежде чем сделать это на своей реальной машине. Поэтому, пока мы можем попробовать что-то, я намерен это сделать в "реальной жизни" как бы.)

Pypy можно использовать из любой точки системы через pypy, а не python.

pypy my_python_script.py

Кажется, что он установлен нормально и кажется пригодным для использования.

Теперь я хочу сделать так, чтобы в любое время, когда я захочу использовать python, он предполагал, что я имею в виду pypy.

Например, я установил Django в pypy, но когда я пытаюсь запустить django-admin.py, он понятия не имеет, о чем я говорю. Я полагаю, что смогу выполнить эту часть, добавив куда угодно django-admin.py в мою переменную $HOME.

На данный момент это не относится к делу.

Итак, мой вопрос: как мне заменить стандартный python моей предпочтительной версией - в данном случае, pypy.


Я пересматриваю свой вопрос, основываясь на до сих пор ответе - , что замена CPython в целом не очень хорошая идея , так как это может привести к сбою в системе.

Я немного читал на virtualenv - выглядит хорошо, но, похоже, он не отвечает на мой вопрос (или, мне не хватает как).

Я хочу использовать pypy для моей работы в python. Разработка работы для таких вещей, как, Django, Google App Engine и другие подобные глупости. (Я понимаю, что может быть проблема с совместимостью, я обращусь к тем с помощью модульных тестов или с помощью других средств. Просто знайте, что в данный момент это не относится к делу.)

Итак, имея в виду хочу использовать pypy вместо python. И чтобы ./django-admin.py работал глобально, его нужно было бы установить с системным питоном. Как я могу настроить систему для поддержки этих "глобальных" сценариев python из pypy или основного системного python?

1
задан 12 February 2012 в 21:20

1 ответ

Это не хорошая идея смешать с системным Python, потому что, как Вы заметили, Ubuntu использует Python широко, таким образом, любое изменение может представить Вашу нестабильную систему.

Кроме того, как разработчик, я могу сказать Вам, что глобально устанавливающие сторонние библиотеки в Вашу систему, Python не является хорошей идеей ни один - все начнет разваливаться, как только у Вас есть два проекта, которые требуют различных версий Django, например.

К счастью Python имеет очень хорошие инструменты для создания изолированных сред, которые могут быть абсолютно независимы от системы Python.

Взгляните на virtualenv и zc.buildout (наряду с djangorecipe) для цивилизованного решения Вашей проблемы.:)

ОБНОВЛЕНИЕ: Очень кратко вот то, как zc.buildout решил бы Вашу проблему:

Вы создаете каталог, куда Вы помещаете bootstrap.py и buildout.cfg файл, который содержит

[buildout]
parts = django
versions = versions

[versions]
django = 1.2.5

[django]
recipe = djangorecipe
settings = development
eggs = ${buildout:eggs}
project = mymegaapp

Затем Вы работаете /path/to/python/interpreter/python bootstrap.py, в которой точке Ваш buildout "помнит", какой интерпретатор Python Вы использовали. Это также создает a bin каталог, где все Ваши "глобальные" сценарии будут автоматически сгенерированы. Затем Вы работаете bin/buildout, который загружает и устанавливает Django указанной версии, создает пустой проект, названный "mymegaapp" и т.д. После того, как это будет закончено, Вы найдете django команда в bin каталог, который эквивалентен django-admin.py, таким образом, можно работать

bin/django syncdb
bin/django runserver

и т.д. Вы никогда не должны волноваться, чтобы не забыть использовать корректный интерпретатор. Конечно, это - просто очень небольшая часть того, что можно сделать с buildout..., просто думают о помещении buildout.cfg в VCS, таким образом, можно восстановить приложение со всеми зависимостями в точных версиях, даже через несколько лет с этого времени... или о наличии нескольких конфигураций для различных "конфигураций развертывания" :)

Для быстрого примера, как сделать это с virtualenv, можно взглянуть на эту статью - инструкции должны работать кроме самой первой части - необходимо будет установить setuptools с pypy, не со 'стандартным' интерпретатором. Затем Вы будете использовать python сценарий сгенерирован в Вашей песочнице bin каталог:

cd myapp
../venv/bin/python manage.py runserver 0.0.0.0:8000

(У меня есть чувство, что вопрос становится все меньше и меньше относящимся к Ubuntu... мы должны попросить его быть перемещенными в stackoverflow?)

3
ответ дан 12 February 2012 в 21:20

Другие вопросы по тегам:

Похожие вопросы: