Windows에서`#! / usr / bin / env python` 작동 file or directory 이 작업을 수행하려면 어떻게해야합니까? 접미사로

MSYS에서 제공하는 Windows에서 Bash를 사용합니다.

shebang과 함께 Python 파일을 실행하려고 시도했지만 #!/usr/bin/env python다음 오류 메시지가 표시됩니다.

/usr/bin/env: python: No such file or directory

이 작업을 수행하려면 어떻게해야합니까?

접미사로 파이썬 파일을 시작할 수 있다는 것을 알고 python있지만 접미사 없이도 작동하도록하고 싶습니다.



답변

대신 Python이 설치된 올바른 경로를 사용하십시오 (예 :

#!c:/Python/python.exe

시스템에서 유닉스 계열의 경로를 지원하는 경우 (MSYS에 익숙하지 않음) 항상 python실행 파일 의 경로 ( 예 :의 출력) 를 입력 할 수 있습니다 which python.


답변

Windows 용 Python Launcher에 관심이있을 수 있습니다.


답변

셸에서 실행할 때 발생하는 작업 :

$ /usr/bin/env python

..?

대화 형 파이썬 세션을 시작하면 파이썬을 찾을 수 있습니다. (또한 간단하게 실행할 수 있습니다 🙂 type python. “이러한 파일이나 디렉토리 python가 없습니다 “라고 인쇄되면 PATH에없는 것입니다. 문제를 해결하기 위해 다음을 조정할 수 있는지 확인하십시오 (경로 / to / python의 공백으로 인해 문제가 발생할 수 있음).

$ export PATH=$PATH:/path/to/python
$ /usr/bin/env python


답변

Virtualenv activate.sh파일과 MSYSGIT 가 일치하지 않는 것으로 나타났습니다 . Windows에서는 작동하지 않았습니다.


답변

최신 버전의 Windows 10은 Linux 하위 시스템 설치를 지원합니다. 거기에서 실행하면 경로가 정확해야합니다.

그런 식으로 실행해도 괜찮다면 작동하는 솔루션이어야합니다.


답변

문제의 근원은 shebangs의 공백이 실행 파일에 추가 인수를 제공하는 것으로 해석되므로 인수 C:\Program Files\Python\python.exeC:\Program제공된 Files\Python\python.exe것입니다.

cmd.exe와 Powershell 및 기타 도구에서 실제로 문제를 일으킬 수는 있지만 Windows는 $HOME디렉토리 Program Files및 기타 장소 의 공간을 좋아하기 때문에 가장 좋은 해결책은 다음 과 같습니다.

Python을 설치 하고 그 안에 C:\Python있는 C:\Python폴더 python.exe와 그 Scripts안에 있는 디렉토리를 PATH시스템 또는 사용자 레벨 의 환경 변수에 추가하십시오.

당신이 공존에 파이썬 2.7.x 및 3.x 필요한 경우에이를 설치 C:\Python27하고 C:\Python36하고 C:\Python37하고 이름 바꾸기 python.exepython2.exe, python36.exe, python37.exe, 등 그 폴더와 각 추가 Scripts에 폴더를 PATH. “default”가 되고자하는 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


답변