Найти - Пользователи
Полная версия: Случай из жизни Python скрипта
Начало » Флейм » Случай из жизни Python скрипта
1
JOHN_16
Жил был Python интерпретатор версии 2.7 на Windows XP системе. Жил вполне себе не тужил. Обслуживал он скрипт foo.py, который начинался со строки
#! -*- coding: utf-8 -*-
обслуживал он его хорошо, без нареканий, всегда выдавая нужный результат пользователю, который мышкой два раза кликал по иконке файлика. Намедни, подселили в систему собрата его, младшего временем, да старшего версией - Python 3.4.1, да подселили тихонечко, на правах второго интерпретатора, без привязок ОС к py файликам. И начались странности странные - щелкает мышкой пользователь, да схлопывается программа привычная. В консолюшке командою foo.py вымолвил скриптик на языке понятном:
Unable to create process using '-*- coding: utf-8 -*- "H:\????????\...\foo.py" '
а явно интерпретатором указанным, заработал скриптик как в светлое времечко.
И призадумался пользователь в скромную выдачу Googl'ушки заглядывая - где же беда юродивая спрятана? И наткнулся пользователь на светлу мысленку и убрал восклицательный знак после решеточки, и небо прояснилось и жить снова хорошо стало, да только думы в головушки осталися, отчего ли так соседушка повлиял на собрата своего, который скриптик этот 3ий год гоняет постоянненько?
Singularity
По pep файл должен начинаться с
#!/usr/bin/env python
# coding: utf-8
JOHN_16
Разумеется. Эта опечатка была исправленна сразу когда в глаза бросилась=)
вопрос то в другом - почему до установки Python3 все работало и так, а после уже не так.
Shaman
Сопоставление типа файла с программой обработки переназначено, наверно. Надёжнее всего в ярлыке жестко прописать команду.
py.user.next
JOHN_16
Намедни, подселили в систему собрата его, младшего временем, да старшего версией - Python 3.4.1
Собрал 3.4.1, строку кодировки воспринимает нормально - как и ожидалось. Но проверял на лине.

Singularity
По pep файл должен начинаться с
обеих строк может не быть
http://legacy.python.org/dev/peps/pep-0263/

строка запуска не обязательна, если запускаешь из командной строки
python3 script.py

JOHN_16
да подселили тихонечко, на правах второго интерпретатора, без привязок ОС к py файликам
JOHN_16
В консолюшке командою foo.py вымолвил скриптик на языке понятном:
Из командной строки запусти в виде
путь\python script.py
PooH
Предположу, что пока была одна версия питона, не было нужды лезть в чибанг
JOHN_16
PooH
вот, первое интересное предположение. Получается питон 2.7 пока был один имел в некоем месте (реестр винды?) информацию о том что он в системе единственный не обращал внимание на #! ?

py.user.next
Из командной строки запусти в виде
так то он работает как обычно - без каких либо сообщений. Сказанное PooH напоминает правильное направление мысли.
py.user.next
Так у тебя, походу, установлена переключалка питонов. Она же залазит в комментарий, чтобы запускать скрипт в соответствующей версии.

https://docs.python.org/3/whatsnew/3.3.html#pep-397-python-launcher-for-windows
The Python 3.3 Windows installer now includes a py launcher application that can be used to launch Python applications in a version independent fashion.

This launcher is invoked implicitly when double-clicking *.py files.
JOHN_16
py.user.next
думаю что “в яблочко” попадание. Вопрос закрыт.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB