Как и многие люди, у меня есть версия для python версии 2.7 и 3.5. Некоторый код обратно совместим, а некоторые нет. Это связано с отсутствием модулей, которые существуют для 2.7, но не для 3.5. Поэтому у меня есть справедливый бит сценариев, равный 2,7 и справедливый бит, равный 3,5. По умолчанию расширение .py - это версия python на моем компьютере 3.5. Мой вопрос таков: как вы можете «рассказать» сценарию использовать другую версию python (например, 2.7), а не по умолчанию, используемую мной (3.5). Я слышал о Шебанге, но это только Linux.Shebang/выберите, какую версию python запускает скрипт (Windows)
ответ
Как уже говорилось в комментарии Дж Ф. Себастьяна на this answer, то Python Launcher for Windows можно выбрать версию Python для запуска из притон линии. Согласно документам он устанавливается по умолчанию с Python 3.3 и более поздними версиями.
Это сработало. Загруженный пусковой механизм Python из https://bitbucket.org/vinay.sajip/pylauncher/downloads Я тогда просто использовал обычный Шебанг. Вы можете, например, выполнить '#! Python2'' # python3' или если вы планируете использовать в системах unix: '#!/Usr/bin/env python3' или' #!/Usr/bin/env python2' – DanZoe
В оболочке Windows не используется строка shebang для различения типа файла. Я предполагаю, что вы хотите начать свой файл py с помощью другого интерпретатора, чем по умолчанию.
У вас есть 2 варианта:
Если вы не смешивать версии 2.7 PY файлов и 3,5 PY файлов в одной папке, вы можете использовать virtualenv http://docs.python-guide.org/en/latest/dev/virtualenvs/
Это создает изолированную среду и является очень полезный подход к изоляции любого проекта.
Если у вас есть эти файлы, вы просто создаете .bat-файл, который задает путь к вашему интерпретатору Python 2.7 и выполняет файл py.
Привет, @radek Я создал virtualenv (и venv использует python2.7). Я переместил сценарий внутри среды, но он все еще использует python 3.5, когда я дважды щелкаю (открываю) файл python. (Я также активировал его). – DanZoe
Действительно, он не работает для двойного щелчка. Это полезно для вызова из командной строки. Преимущество venv в том, что вы используете только те дополнительные библиотеки, которые вам нужны. – Radek
Вы хотите использовать один интерпретатор для одного модуля, а другой для другого модуля, загруженного в тот же скрипт? – tglaria
* Это из-за отсутствия модулей, которые существуют для 2.7, но не для 3.5. * Это совсем не так. Существует ** много ** устаревшего кода, который все еще нуждается в поддержке, некоторые магазины все еще не хотят переключаться по какой-либо причине, и есть много учебников и книг, которые говорят, что студенты используют 2.7 по любой причине. Python 3.0 был выпущен в 2008 году, старый аргумент «Отсутствие модулей» просто не выдерживает сегодня воды. – MattDMo
Есть недостаток модулей для python 3.5. Есть намного больше ПОДДЕРЖИВАЕМЫХ и РАБОЧИХ модулей для Python 2.7, чем 3.5. Я не знаю, что вы пытаетесь сделать, противоречив себе. – DanZoe