Использование Python 3.1 с TextMate

Согласно документации MSDN Системы. Тип [1] необходимо быть в состоянии сериализировать Систему. Текстовый объект. Однако, поскольку ошибка явно относится к Системе. Текст. StringBuilder, который вероятен класс, который вызывает ошибку сериализации.

[1] Класс Типа (Система) - http://msdn.microsoft.com/en-us/library/system.type.aspx

24
задан Steve Landey 21 November 2009 в 20:17
поделиться

3 ответа

TextMate использует значение переменной TM_PYTHON , чтобы найти путь к интерпретатору Python. Хорошее решение - воспользоваться возможностью TextMate определять такие переменные, как TM_PYTHON , для каждого проекта:

  1. Откройте новый или существующий проект TextMate ( Файл -> Новый проект или Файл -> Открыть )

  2. Отмените выбор любого файла на боковой панели списка проектов.

  3. Щелкните значок Получить информацию ( i ) на боковой панели. Появится панель Project Information .

  4. Щелкните +, чтобы добавить новую переменную.

  5. Введите TM_PYTHON в поле Variable и полный путь к желаемому питону в поле Value (например, ] /usr/local/bin/python3.1 ).

  6. Закройте информационное окно и сохраните проект ( Файл -> Сохранить проект как ).

Затем вы можете добавлять файлы по мере необходимости в проект, и они будут запущены под выбранным питоном с помощью команды Run Script пакета TextMate Python. Возможно, вы захотите сохранить проект Python 3 , скажем, для запуска специальных сценариев под Python 3. Для более крупных проектов вы все равно захотите создать для него отдельный проект TextMate.

Чтобы изменить версию Python, используемую глобально в TextMate :

  1. В строке меню TextMate откройте TextMate -> Настройки

  2. щелкните панель Дополнительно

  3. щелкните вкладку Переменная оболочки

  4. щелкните + , чтобы добавить новую переменную

  5. введите TM_PYTHON в поле Переменная и полный путь к питону в поле Значение (возможно, / usr / local / bin / python3.1 )

Как указывает Алекс, вы можете нарушить другие функции TextMate, изменив версию Python глобально, поэтому изменение для каждого проекта, вероятно, будет лучшим решением.

ОБНОВЛЕНИЕ (2010-10-31) :

Есть другой подход, который может быть проще использовать для некоторых проектов. Команда Run в пакете Python TextMate , похоже, учитывает строку shebang в выполняемом файле. Так, вместо изменения TM_PYTHON , вы можете указать путь к интерпретатору, который будет использоваться, включив первую строку следующим образом:

#!/usr/local/bin/python3.1

# sample code to show version
import sys
print(sys.version_info)

Во многих случаях вы бы предпочли не использовать hardwire абсолютное путь, но управлять использованием через обычную переменную среды оболочки PATH . Традиционно для этой цели используется / usr / bin / env . Однако при работе под TextMate ваши файлы профиля оболочки обычно не используются, поэтому никакие изменения в PATH не отображаются там, включая, возможно, / usr / local / bin или / opt / local / bin или где угодно, где находится желаемая команда python3 . Чтобы обойти это, вы можете добавить или изменить глобальную переменную оболочки PATH на TextMate -> Предпочтения (см. Выше) со значением, скажем, / usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin . Затем вы можете использовать более общую строку shebang вроде этой:

#!/usr/bin/env python3

(Кажется, все это работает с последней версией vanilla TextMate и ее пакетом Python: никаких гарантий относительно более ранних версий или других пакетов Python.)

53
ответ дан 28 November 2019 в 22:32
поделиться

Имя «функтор» традиционно использовалось в теории категорий задолго до того, как на сцене появился C ++. Это не имеет ничего общего с концепцией функтора в C ++. Лучше использовать имя объект функции вместо того, что мы называем «функтором» в C ++. Вот как другие языки программирования вызывают аналогичные конструкции.

Используется вместо простой функции:

Особенности:

  • Функциональный объект может иметь состояние
  • Функциональный объект вписывается в ООП (он ведет себя как любой другой объект).

Минусы:

  • Повышает сложность программы.

Используется вместо указателя функции:

Особенности:

  • Функциональный объект часто может быть встроен

Минусы:

  • Функциональный объект не может быть заменяется на другой тип объекта функции во время выполнения (по крайней мере, если он не расширяет какой-либо базовый класс, использование reload , которое исчезло в Python 3, неоднократно упоминается в потоке). Тем не менее, это может сработать, если вы не используете или не нуждаетесь в большей части функциональности TextMate (например, набор текста LaTeX упоминался как нечто, что полностью ломается, когда вы заставляете TextMate использовать Python 3 вместо Python 2).

5
ответ дан 28 November 2019 в 22:32
поделиться

Опоздал на вечеринку, извините! Я так понимаю, вы хотите запустить скрипт, используя "встроенный" интерпретатор TextMate? Я нашел самое простое решение - добавить shebang, который работает очень хорошо;

#!/usr/bin/env python3

для python 3.1 или;

#!/usr/bin/env python

для системного python по умолчанию, хотя последний излишен для данного упражнения.

8
ответ дан 28 November 2019 в 22:32
поделиться
Другие вопросы по тегам:

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