Python == python2 ИЛИ Python == python3? Как упаковать, распределите сценарии python py2k?

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

самый легкий путь состоит в том, чтобы добавить, "s" в конец строки ядра в личинке (используйте e для редактирования записи и b для начальной загрузки). Это будет обычно отбрасывать Вас к корневой подсказке.

совместное использование пароля не должно иметь значения между прочим, таким образом хождение в james и делая "su" должно работать.

10
11.12.2011, 14:47
3 ответа

На более старых версиях, может только быть python вместо python2. Для создания строки хижины более ясной Вы могли создать ссылку python2 -> python таким образом, можно использовать #!/usr/bin/env python2.

1
27.01.2020, 20:03
  • 1
    Однако это не решает указанную проблему. Поскольку вопрос состоит в том, как сделать Ваш сценарий достаточно портативным, таким образом, он может выполнить во всех упомянутых средах (с "Python" "python2" и т.д.) –  Grzegorz Wierzowiecki 13.08.2013, 21:37

Я думаю, что "стандарт" определен в https://www.python.org/dev/peps/pep-0394/

Этот ПЭП обеспечивает конвенцию, гарантирующую, что питонские сценарии смогут продолжают быть переносимыми в *nix-системах, независимо от того, по умолчанию. версия интерпретатора Python (т.е. версия, на которую ссылается интерпретатор команда питона).

  • python2 будет ссылаться на некоторую версию Python 2.x.
  • python3 будет ссылаться на некоторую версию Python 3.x.
  • на данный момент все дистрибутивы должны гарантировать, что python ссылается на ту же самую цель, что и python2.
  • однако конечные пользователи должны знать, что python ссылается на python3, по крайней мере, на Arch Linux (это изменение и послужило причиной создания этот ПЭП), поэтому питон должен использоваться в линии Шебана только для того. скрипты, совместимые с источниками как на Python 2, так и на Python 3.
  • в рамках подготовки к возможному изменению стандартной версии Python, на Python 2 должны быть обновлены только те сценарии, которые совместимы с исходными текстами как на Python 2, так и на Python 3. совместимый с Python 3 или использовать python2 в линии shebang.
1
27.01.2020, 20:03

Сценарий может проверить его версию Python и, если это Python 3, повторно запустите себя с помощью Python 2. Добавьте следующее возле главы скрипта:

if sys.version > '3':
  python2 = os.popen('which python2 2> /dev/null').read().rstrip()
  if python2:
    args = sys.argv[:]
    args.insert(0,python2)
    os.execv(python2,args)
  else:
    sys.exit("%s requires Python Version 2 (python2 not in PATH)" % os.path.basename(__file__))

Это использует систему Команда для определения размещения Python2 в пути окружающей среды . Затем он отправляется с этим (или прервать, если не может его найти).

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

Кроме того, любой выход должен быть промыты до вызова или его будет потеряно. Добавление, например, Sys.Stdout.flush () Незадолго до вызова EXECV будет промыть любой распечатки .

3
27.01.2020, 20:03

Теги

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