Вопрос по python, bash – Выполнение программы на Python

4

Я уже давно ищу ответ в Интернете, но это доставляет мне головную боль:

Я использую Ubuntu 12.04 и хочу выполнить скрипт Python из терминала, не используя полный путь. Поэтому я добавил / home / kyril / python / scripts / в переменную PATH, добавив в ./bashrc следующее:

kyrilpathvariable="/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/kyril/Python/scripts/:/home/kyril/Bash/scripts"

if [ "$kyrilpathvariable" = "$PATH" ]; then
    echo PATH already exported

else

PATH=$PATH:/home/kyril/Python/scripts/
PATH=$PATH:/home/kyril/Bash/scripts/
export PATH

fi

(Я знаю, что предложение if не является необходимым, но мне не хотелось, чтобы все два раза содержалось в моем PATH, если я ввожу exec bash.)

Теперь проблема: это отлично работает для моих скриптов Bash, так что после того, как я сделаю их исполняемыми через chmod, я могу просто напечатать$ script.sh и это выполняется. Однако, если я наберу$ python3 script.py возникает следующая ошибка:python3: can't open file 'script.py': [Errno 2] No such file or directory

если я наберу полный путь к сценарию, он работает. У кого-нибудь есть идея, что я делаю не так? Нужно ли добавлять каталог в PYTHONPATH? (Как я понял, это помогает только для импорта модулей).

Спасибо, парни!

Почему ты хочешь бежать?python3 script.py вместоscript.py? robert

Ваш Ответ

4   ответа
5

python3 напрямую python запускает файл сценария, который вы ему сказали, без использования$PATH найти его.PYTHONPATH не имеет значения - это используется для поиска модулей Python.

Я предполагаю, что у вас возникли проблемы с вызовом неверного переводчика при запускеscript.py само собой. Я не знаю, какова первая строка вашего сценария, но это должно быть так:

#!/usr/bin/env python3

Или если вам нужно еще более точное управление:

#!/usr/bin/env python3.2

И для скриптов Python 2:

#!/usr/bin/env python2

Или же:

#!/usr/bin/env python2.7

Вы должны проверить, что эти исполняемые файлы существуют в вашей системе, прежде чем пытаться их использовать.

Error: User Rate Limit Exceeded YumTum
0

python3 $(type -P script.py)

PATH для исполняемого файла и укажите его местоположение и имя.

Например:

$ type -P script.py
/usr/local/bin/script.py
0

что переменные пути игнорируются, когда python ищет входной файл. Python начинает поиск «script.py»; в текущем каталоге, не зная, что для этого файла объявлена переменная пути, и поэтому не может ее найти.

К сожалению, я не уверен, как ее решить, но, может быть, кто-то более опытный с переменными может нас просветить?

0

for dir in Python Bash; do
  dir_to_add="$HOME/$dir/scripts"
  case ":$PATH:" in
    *:"$dir_to_add":*) ;; # path already contains dir, do nothing
    *) PATH+=":$dir_to_add" ;;
  esac
done
Error: User Rate Limit Exceeded YumTum

Похожие вопросы