Заставить `#!/ Usr/bin/env python` работать на Windows
Я использую Bash на Windows, предоставленной MSYS.
Я пытался запустить файл Python с Shebang #!/usr/bin/env python, но я получаю это сообщение об ошибке:
/usr/bin/env: python: No such file or directory
Что я могу сделать, чтобы сделать эту работу?
Я знаю, что могу запустить файл Python, добавив к нему суффикс python, но я хочу, чтобы он работал без суффикса тоже.
7 ответов
Я оказался несоответствием между Virtualenv activate.sh файл и MSYSGIT. Он никогда не был предназначен для работы на Windows.
Вместо этого используйте правильный путь, где установлен Python, например:
#!c:/Python/python.exe
Если у вас есть Unix-подобная поддержка путей в вашей системе (я не знаком с MSYS), вы всегда можете ввести путь к вашему python исполняемый, то есть вывод which python,
Последние версии Windows 10 поддерживают установку подсистем Linux. Если вы бежите оттуда, пути должны быть правильными.
Это должно быть рабочее решение, если вы в порядке с этим.
Корень проблемы в том, что пробелы в шебангах интерпретируются как предоставление дополнительных аргументов исполняемому файлу, поэтому C:\Program Files\Python\python.exe рассматривается как C:\Program данный Files\Python\python.exe в качестве аргумента.
Лучшее решение для этого, потому что Windows ЛЮБИТ пробелы в $HOME каталог и Program Files и другие места, даже если они действительно могут сломать файлы cmd.exe, Powershell и других инструментов, это:
Установите Python для C:\Python и добавить C:\Python папка где python.exe жизнь и Scripts каталог, который живет внутри него к вашему PATH переменная окружения на уровне системы или пользователя.
Если вам нужны Python 2.7.x и 3.x для совместной работы, установите их в C:\Python27 а также C:\Python36 а также C:\Python37 и переименовать python.exe в python2.exe, python36.exe, python37.exeи т.д. и добавьте каждую из этих папок и их Scripts папки в PATH, Вы можете определить, какая из версий Python 3 должна быть "по умолчанию", а также сделать копию в этой папке как python3.exe обрабатывать любые сценарии, которые используют !#/usr/bin/env python3,
Если в вашем домашнем каталоге пользователя есть пробел, у вас могут возникнуть проблемы, если вы используете pip install --user somepackage синтаксис. --user по умолчанию это ваш домашний каталог, и в этом случае пространство будет сбивать с толку. Обходной путь описан здесь, но сводится к экспорту PYTHONUSERBASE в вашу среду.
export PYTHONUSERBASE=/myappenv
pip install --user SomePackage
или в Windows (Powershell):
$env:PYTHONUSERBASE='C:\PythonPkgs'
pip install --user SomePackage
Хотя это не отвечает на вопрос...
Для людей, которые установили python2, затем python3 и только сейчас хотят, чтобы их программы Python3 запускались... щелкните правой кнопкой мыши => открыть с помощью => Выберите другое приложение, затем перейдите к вашему python3 python.exe
Что происходит при запуске (из оболочки):
$ /usr/bin/env python
..?
Если он запускает интерактивную сессию Python, то Python можно найти. (Вы также можете просто запустить: type python). Если он печатает "нет такого файла или каталога", то python не найден в вашем PATH. Посмотрите, можно ли настроить следующее для устранения проблемы (пробелы в пути / к /python, вероятно, вызовут проблемы):
$ export PATH=$PATH:/path/to/python
$ /usr/bin/env python