Несколько версий Python на Leopard OS X

совет hazzen хорош (используйте массивы), так как Вы, вероятно, хотите сделать, много этих разрушительных обновлений и списков очень неэффективно наугад доступ. Самый легкий способ сделать это

(setq A (make-array 5) :initial-contents '(4 3 0 2 1))
(setf (elt 2 A) 'not-a-number)

, где A является массивом (хотя elt работы для любой последовательности).

Однако, если Вы должны быть функциональными, который является

  1. , Вы хотите иметь в наличии, и старые и новые списки
  2. Вы хотите, чтобы старое и новое совместно использовали как можно больше памяти.

Тогда необходимо использовать язык Common LISP, эквивалентный из кода hazzen:

(defun replace1 (list n elem)
  (cond
    ((null list) ())
    ((= n 0) (cons elem list))
    (t (cons (car list) (replace1 (cdr list) (1- n) elem)))))

Это выглядит медленным, потому что это, и это, вероятно, почему это не включено в стандарт.

код hazzen является версией Схемы, которая полезна, это - то, что Вы используете.

21
задан Tanktalus 10 August 2009 в 20:10
поделиться

4 ответа

Нет ничего плохого в том, чтобы использовать несколько версий Python. Иногда это необходимо при использовании приложений с зависимостями версий. Вероятно, самая большая проблема связана с зависимостями сайта от пакета, которые могут отличаться от приложения к приложению. Здесь могут помочь такие инструменты, как virtualenv . Одна вещь, которую вы не должны делать , - это пытаться удалить поставляемый Apple Python в / System / Library / Frameworks и связанный с ним из / usr / bin / python. (Обратите внимание на недавнее обсуждение нескольких версий здесь .)

20
ответ дан 29 November 2019 в 21:17
поделиться

Подход, который я предпочитаю, должен работать в любой UNIX-подобной операционной системе:

Создайте для каждого приложения, которому требуется определенная версия Python, учетную запись пользователя. Установите для каждого пользователя соответствующую версию python с префиксом локального пользователя (например, ~ / build / python) и добавьте ~ / build / bin / в переменную среды PATH пользователя. Устанавливайте / используйте свои приложения python для их правильного пользователя.

Преимущество этого подхода - идеальная изоляция между отдельными установками python и относительно удобный выбор правильной среды python (просто su для соответствующего пользователя ). Также операционная система остается нетронутой.

1
ответ дан 29 November 2019 в 21:17
поделиться

virtualenv Яна Бикинга позволяет мне иметь изолированные Pythons для каждого приложения, которое я создаю, и позволяет мне решать, включать ли глобальные пакеты сайтов в изолированную среду Python. .

Я не пробовал это с Zope, но предполагаю, что следующее должно работать нормально:

  1. Используя Python от Zope, создайте новый virtualenv с или без --no-site-packages
  2. Перетащите Zope в виртуальную среду
  3. Активируйте среду с помощью $ VENV / bin / activate
  4. Установите все необходимые пакеты сайта
  5. Запустите Zope с помощью Python сейчас по адресу $ VENV / bin / python

Это блестяще сработало для управления проектами Django с различными версиями Python, Django и надстройками.

Эта статья , кажется, более подробно описывает особенности Grok и Virtualenv,но общие положения должны относиться и к Zope.

9
ответ дан 29 November 2019 в 21:17
поделиться

+1 для virtualenv.

Даже если вам не нужны разные версии Python, все равно хорошо держать зависимости разработки отдельно от Python.

Я не уверен, какую ОС вы используете, но нахожу эти инструкции, очень полезные для запуска сред разработки python в OSX.

2
ответ дан 29 November 2019 в 21:17
поделиться
Другие вопросы по тегам:

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