Заставить `#!/ 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