- /bin/env: python: No such file or directory (Windows through Git Bash trying to install new Parse Cloud Code)
- 4 Answers 4
- ./filename.py : No such file or directory
- 2 ответа 2
- Выводы
- Resolving “usr/bin/env: ‘python’ No such file or directory” Error
- Causes of the “usr/bin/env: ‘python’ No such file or directory” Error
- Resolving the “usr/bin/env: ‘python’ No such file or directory” error
- Installing Python
- Updating the PATH Environment Variable
- Windows
- Linux
- macOS
- Using the Correct Version of Python
- Correcting the Shebang Line
- Tensorflow build /usr/bin/env ‘python’ no such file or directory
- FAQs
- Conclusion
/bin/env: python: No such file or directory (Windows through Git Bash trying to install new Parse Cloud Code)
Trying to install python from the link here does not seem to give access to the python command in Msysgit. following the instructions here, does not actually say how to get python to work as needed. Current error when running parse new project_name is:
4 Answers 4
This error means that Git Bash does not know where your python.exe is. It searches your normal windows search path, the PATH environment variable. You’re probably failing the 4th step on the instructions already «Make sure Python is working in the Git Bash»:
$ python --version sh.exe: python: command not found
To fix that, append C:\Python (or wherever you installed python) to your PATH environment variable in windows (instructions here). You need to restart the bash after this for the change to take effect. This will allow you to run python from the windows command prompt as well.
C:\> python --version Python 2.7.2
If you don’t want to alter your windows PATH variable or make python only available to git bash, you could create a .bashrc file in your %USERPROFILE% directory and set the variable there:
C:\>notepad %USERPROFILE%\.bashrc
to the file. That script is executed every time you start the git bash and prepends C:\Python to git bash’s PATH variable, leaving the system-wide PATH variable untouched.
Now that you know what has to be done, you can use this shortcut on the bash instead (appends the export command to your .bashrc)
$ echo export PATH=/c/Python:\$PATH >> ~/.bashrc
./filename.py : No such file or directory
Так же была выполнена команда chmod u+x ./filename.py при попытке запустить из терминала ./filename.py отвечает :
-rwx--x--x 1 User User 9.8K Sep 27 16:01 filename.py
#!/usr/bin/python python #!/usr/bin/python
видимо нет 00000000 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 |#!/usr/bin/env p| 00000010 79 74 68 6f 6e 0d 0a 23 2d 2a 2d 20 63 6f 64 69 |ython..#-— codi| 00000020 6e 67 3a 20 55 54 46 2d 38 20 2d 2a 2d 0d 0a 69 |ng: UTF-8 ——
0d 0a — это cr+lf (оно же \r\n ). может быть, стоит заменить переводы строк на «юниксовые» \n ? это можно сделать, например, с помощью команды $ dos2unix файл .
2 ответа 2
tl;dr: см. Выводы внизу
Чтобы понять откуда берётся пустое имя файла (слева от : в сообщении об ошибке):
>>> import os >>> os.system('./hi.py') : No such file or directory 32512
можно вызвать команду напрямую без оболочки (такой как bash):
>>> from subprocess import Popen, PIPE >>> Popen('./hi.py', stdout=PIPE, stderr=PIPE).communicate() (b'', b'/usr/bin/env: python\r: No such file or directory\n')
результат говорит, что b’\r’ распознаётся как часть имени команды. На POSIX системах имя файла может быть произвольной последовательностью байтов (кроме нуля b’\0′ и слэша b’/’ ). Если создать исполняемый файл в PATH, который имеет имя b’python\r’ :
>>> os.symlink('/usr/bin/python', os.path.expanduser('~/bin/python\r'))
где hi.py простой исполняемый скрипт Питона с Виндовыми окончаниями строк:
>>> open('hi.py', 'wb').write(b'#!/usr/bin/env python\r\nprint("hi!")') >>> os.chmod('hi.py', 0b111101101) # rwxr-xr-x
Имя команды не видно в первом примере, потому что b’\r’ в терминале переводит курсор в начало строки:
то есть буквы ab забиваются цифрами 12 в данном примере. Пример демонстрирует традиционное поведение для CR (carriage return).
Сам python поддерживает универсальный режим новых строк и поэтому работает с ‘\r\n’ и на Unix:
>>> os.unlink(os.path.expanduser('~/bin/python\r')) >>> os.system('python ./hi.py') hi! 0
#! -строку (shebang) распознаёт не python , и даже не bash , а ядро операционной системы (Linux, к примеру). По умолчанию современные версии Unix игнорируют горизонтальный пробел (пробел b’ ‘ и таб b’\t’ ) в конце #! -строки:
>>> import string >>> for ws in string.whitespace: . with open('space[%X].py' % ord(ws), 'w') as f: . f.write('#!/usr/bin/env python%s\nprint("%X")' % (ws, ord(ws))) >>> from glob import glob >>> for cmd in glob('./spac*.py'): . os.chmod(cmd, 0b111101101) . Popen(cmd, stdout=PIPE, stderr=PIPE).communicate() . (b'', b'/usr/bin/env: python\r: No such file or directory\n') (b'20\n', b'') (b'A\n', b'') (b'', b'/usr/bin/env: python\x0b: No such file or directory\n') (b'9\n', b'') (b'', b'/usr/bin/env: python\x0c: No such file or directory\n')
То есть команда работает для ‘ \n\t’ и не работает для ‘\r\v\f’ .
Если хочется запускать скрипт напрямую (не указывая интерпретёр явно), то следует использовать Юниксовые окончания строк, как предложил @alexander barakin:
>>> data = open('./hi.py', 'rb').read() >>> open('./hi.py', 'wb').write(data.replace(b'\r\n', b'\n')) 34 >>> os.system('./hi.py') hi! 0
Системы контроля версий такие как Mercurial (hg), git наверняка имеют опции, которые помогут заменить новые строки текущей операционной системы на \n для .py файлов автоматически, если нет возможности использовать редактор, который подерживает \n напрямую.
from setuptools import setup setup(name='program', version='1.2.5', description='', long_description='', author='', author_email='', url='', license='', py_modules=['program'], entry_points= < 'console_scripts': ['program=program:main'] >)
где program.py файл, для примера, мог быть создан на Винде:
>>> open('program.py', 'wb').write(b'#!/usr/bin/env python\r\ndef main():\r\n print("hi!")\r\n') 52
При инсталляции создаются скрипты с правильной #! -строкой на Unix системах и соответствующие .exe файлы на Windows:
>>> import subprocess >>> import sys >>> subprocess.call([sys.executable] + '-m pip install -e .'.split()) Obtaining file:///tmp/prj Installing collected packages: program Running setup.py develop for program Successfully installed program-1.2.5 0 >>> subprocess.call('program') hi! 0
Прямое чтение машинно-сгенерированного файла подтверждает, что ‘\n’ используется на Unix ( docker run -v $PWD:/tmp/prj -it —rm python ) системе:
>>> import shutil >>> open(shutil.which('program'), 'rb').readline() b'#!/usr/local/bin/python3\n'
Выводы
- ‘\r’ в #! -строке рассматривается как часть имени команды ( b’python\r’ ) на некоторых системах, что вызывает ошибку: «No such file or directory» при попытке запуска скрипта
- некоторые терминалы, встречая ‘\r’ в выводе программы, переводят курсор в начало строки, поэтому имя файла в сообщении об ошибке (часть слева от двоеточия) кажется пустым (текст сообщения напечатан поверх него)
- не ясно почему Linux ядро не игнорирует ‘\r’ в конце #! -строки, как оно это делает для пробелов и табов. Возможно такой выбор сделан, чтобы как раз помочь заметить, что скрипт имеет несовместимые окончания строк (что может указывать на другие проблемы с переносимостью в программе)
- предпочтительный способ обхода этой проблемы—использование редактора, который поддерживает ‘\n’ на Windows. Или же, если разработка ведётся исключительно на Винде, то создание setup.py с setuptools’ entry_points как показано выше, чтобы при инсталляции правильные для платформы скрипты-обёртки генерировались бы автоматически.
Resolving “usr/bin/env: ‘python’ No such file or directory” Error
As a Python developer, you may encounter the error message “usr/bin/env: ‘python’ No such file or directory” when trying to run a Python script from the command line. This error message indicates that the Python interpreter can’t be found in the default PATH environment variable. In this article, we will explore the causes of this Error and how to resolve it.
Causes of the “usr/bin/env: ‘python’ No such file or directory” Error
There are several reasons why you may encounter this Error:
- Python is not present on the system
- Python is installed but not in the PATH environment variable
- The wrong version of Python is being used
- Incorrect shebang line in the Python script
Resolving the “usr/bin/env: ‘python’ No such file or directory” error
Installing Python
If Python is not installed on your system, you can install it by following the instructions for your operating system. For Windows, you can download the Python installer from the official Python website and run it to install Python. For Linux and macOS, you can use the package manager to install Python.
Updating the PATH Environment Variable
If Python is installed but not in the PATH environment variable, you can add it to the PATH. To do this, you will need to modify the PATH environment variable. The process of updating the PATH environment variable is different for each operating system, so you will need to follow the instructions specific to your operating system.
Windows
- Open the Start menu and search for “Environment Variables”
- Click on “Edit the system environment variables”
- Click on the “Environment Variables” button
- Under “System Variables”, scroll down and find the “Path” variable
- Click on the “Path” variable and then click on the “Edit” button
- Click on the “New” button and add the path to the Python executable, for example: C:\Python38\
- Click OK to close all open windows
Linux
- Open the terminal and edit the .bashrc file: nano ~/.bashrc
- Add the following line at the end of the file, replacing /path/to/python with the path to your Python executable:
export PATH=$PATH:/path/to/python
- Save the file and exit the editor
- Run the following command to reload the .bashrc file: source ~/.bashrc
macOS
- Open the terminal and edit the .bash_profile file: nano ~/.bash_profile
- Add the following line at the end of the file, replacing /path/to/python with the path to your Python executable:
export PATH=$PATH:/path/to/python
- Save the file and exit the editor
- Run the following command to reload the .bash_profile file: source ~/.bash_profile .
Using the Correct Version of Python
If you have multiple versions of Python installed on your system, you may be using the wrong version of Python. To resolve this issue, you can specify the path to the correct version of Python in the shebang line of your Python script.
Correcting the Shebang Line
The shebang line is the first line of a Python script and specifies the interpreter that should be used to run the script. If the shebang line is incorrect, you may encounter the error “usr/bin/env: ‘python’ No such file or directory”. To resolve this issue, you can correct the shebang line in your Python script to ensure that it points to the correct version of Python.
Here’s an example of a correct shebang line for Python 3:
And here’s an example of a correct shebang line for Python 2:
It’s important to note that the path to the Python interpreter may be different on your system, so you may need to adjust the shebang line accordingly.
Here’s an example of a complete Python script with a correct shebang line:
#!/usr/bin/env python3 print("Hello, World!")
Once you have corrected the shebang line, you should be able to run the script without encountering the “usr/bin/env: ‘python’ No such file or directory” error.
Tensorflow build /usr/bin/env ‘python’ no such file or directory
This error message suggests that the python executable could not be found in the environment’s /usr/bin directory.
One potential reason for this Error is that the specified version of Python is not present on the system or is not available in the environment’s PATH. To resolve this issue, you should check the version of Python that is present on your system and make sure that it is the correct version that you want to use with TensorFlow .
If you have multiple versions of Python installed, you can specify the desired version using the python command followed by the version number.
python3.7 -m pip install tensorflow
Alternatively, you can also create a virtual environment using virtualenv or conda and install the desired version of Python and TensorFlow in that environment.
If the issue persists, you can also try installing TensorFlow using the pip command without specifying the Python version:
This will install the latest version of TensorFlow that is compatible with the version of Python that is currently active in your environment.
FAQs
Yes, you can update the PATH environment variable for a specific user by editing their shell profile file (e.g. ~/.bashrc on Linux or ~/.bash_profile on macOS) instead of the system-wide environment variables.
Conclusion
The error “usr/bin/env: ‘python’ No such file or directory” can be caused by several different issues, including Python not being installed on the system, the PATH environment variable not being set correctly, the wrong version of Python being used, or the shebang line in the Python script being incorrect. By understanding the causes of this Error, you can take the necessary steps to resolve it and ensure that your Python scripts run correctly.