Я пытался найти ответ в Google, но безуспешно.
Мне нужно использовать мой рабочий суперкомпьютерный сервер, но для запуска моего сценария python он должен выполняться через сценарий оболочки.
Например, я хочу job.sh
выполнитьpython_script.py
Как этого добиться?
python python_script.py
вставить свой сценарий оболочки?python python_script.py
. Или просто./python_script.py
если в сценарии есть шебанг.Ответы:
Просто убедитесь, что исполняемый файл python находится в переменной среды PATH, затем добавьте в свой скрипт
python path/to/the/python_script.py
Детали:
chmod u+x job.sh
./job.sh
источник
python --version
, а можете принудительно установить версию с помощьюpython3 hello.py
.source PATH/TO/VENV/bin/activate
позвонитьpython python_script.py
/path/to/Python: can't open file '/path/to/script': [Errno 1] Operation not permitted
есть ли способ включить мой код Python в строку сценария bash?Метод 1. Создайте сценарий оболочки:
Предположим, у вас есть файл Python.
hello.py
Создайте файл с именемjob.sh
, содержащий#!/bin/bash python hello.py
отметьте его как исполняемый, используя
$ chmod +x job.sh
затем запустите это
Метод 2 (ЛУЧШЕ) - Запустите сам питон из оболочки:
Измените свой скрипт
hello.py
и добавьте его как первую строку#!/usr/bin/env python
отметьте его как исполняемый, используя
$ chmod +x hello.py
затем запустите это
источник
#!/usr/bin/env python
. Не забудьте убедиться, что вы ссылаетесь на правильную версию python + путь для вашей системы!Имхо, пишу
python /path/to/script.py
Совершенно неправильно, особенно в наши дни. Какой питон? python2.6? 2.7? 3.0? 3.1? В большинстве случаев вам нужно указать версию python в теге shebang файла python. Я рекомендую использовать
для совместимости.В таком случае гораздо лучше иметь исполняемый файл скрипта и вызывать его напрямую:
Таким образом, нужная вам версия python записывается только в один файл. В настоящее время большая часть систем имеет python2 и python3, и бывает, что символическая ссылка python указывает на python3 , тогда как большинство людей ожидают, что она указывает на python2 .
источник
python script.py param
?./abc.py -h
Сохраните следующую программу как
print.py
:#!/usr/bin/python3 print('Hello World')
Затем в типе терминала:
chmod +x print.py ./print.py
источник
Вы должны иметь возможность вызывать его,
python scriptname.py
например,# !/bin/bash python /home/user/scriptname.py
Также убедитесь, что у сценария есть разрешения на запуск.
Вы можете сделать его исполняемым, используя
chmod u+x scriptname.py
.источник
Для меня это работает лучше всего: добавьте это вверху скрипта:
#!c:/Python27/python.exe
(C: \ Python27 \ python.exe - это путь к python.exe на моей машине) Затем запустите скрипт через:
chmod +x script-name.py && script-name.py
источник
Это работает для меня:
Создайте новое задание файла оболочки. Итак, скажем:
touch job.sh
и добавьте команду для запуска скрипта python (вы даже можете добавить аргументы командной строки к этому питону, я обычно предопределяю аргументы командной строки).chmod +x job.sh
Внутри
job.sh
добавьте следующие файлы py, скажем:python_file.py argument1 argument2 argument3 >> testpy-output.txt && echo "Done with python_file.py"
python_file1.py argument1 argument2 argument3 >> testpy-output.txt && echo "Done with python_file1.py"
Done with python_file.py
Done with python_file1.py
Я использую это обычно, когда мне нужно запустить несколько файлов python с разными предварительно определенными аргументами.
Примечание: просто кратко о том, что здесь происходит:
python_file.py argument1 argument2 argument3 >> testpy-output.txt && echo "completed with python_file.py" .
python python_file.py
просто и понятно. Затем >> напечатает и сохранит вывод этого файла .py в файле testpy-output.txt.источник
Я использую это, и он отлично работает
#/bin/bash /usr/bin/python python python_script.py
источник
Поскольку другие сообщения говорят все (и я наткнулся на этот пост, ища следующее).
Вот способ, как выполнить скрипт Python из другого скрипта Python:
Python 2:
execfile("somefile.py", global_vars, local_vars)
Python 3:
with open("somefile.py") as f: code = compile(f.read(), "somefile.py", 'exec') exec(code, global_vars, local_vars)
и вы можете предоставить аргументы, указав другие
sys.argv
источник