Я хочу запустить python script без явного вызова "python" каждый раз в моей оболочке. Я попытался добавить shebang #!/Path/to/python, но это, похоже, не работает. Кто-нибудь знает об этом? Большое спасибо.
Как запустить python script без ввода "python..."
Ответ 1
Вы должны добавить shebang:
#!/usr/bin/env python
Затем выполните исполняемый файл script:
chmod +x foo
Затем вы можете запускать его, как и любой другой исполняемый файл:
./foo
И записка от Homer6: если вы редактируете файл из окон и вызывают его на Linux, вы можете запустить в загадочную ошибку "Нет такого файла или каталога". Это связано с тем, что строки линий являются CRLF вместо LF. Если вы конвертируете их в LF, script будет выполняться так, как ожидалось. Notepad ++ > View > Показать символы > Показать конец строки, чтобы показать символы EOL. И Notepad ++ > Edit > EOL Conversion > Unix Format для преобразования всех строк в LF. Кроме того, вы можете использовать инструмент dos2unix
(dos2unix foo.py
), который присутствует на большинстве систем Linux.
Ответ 2
-
Добавьте строку вверху вашего script:
#! /usr/bin/env python
- Переименуйте script с
script_name.py
наscript_name
- выполнить script исполняемый файл:
chmod +x script_name
Строка вверх выбирает тот же python
, который вы получаете при вводе питона в приглашении. Вы также можете указать прямой путь:
#!/opt/python/3.6/bin/python
Ответ 3
Это действительно не относится к вашим личным скриптам, но поскольку вы цитируете beets
, обратите внимание, что также можно автоматизировать это действие, когда вы распространяете свои пакеты, благодаря setuptools entry_point
.
Поэтому, если вы распространяете пакет типа myModule
и хотите, чтобы функция main_function()
была доступна, набрав mymodulescript
в консоли, вы, вероятно, добавили бы что-то вроде этого в ваш файл setup.py
:
setup(
# your other arguments ..
entry_points={
'console_scripts': [
'mymodulescript = myModule:main_function'
]
}
)
Ответ 4
Убедитесь, что вы можете запускать /path/to/python на своем терминале. И убедитесь, что вы предоставили разрешение на выполнение для вашего файла python. Вы можете дать разрешение на файл с помощью
chmod +x mypythonfile.py