Как выполнить скрипт Python из консоли без записи полного пути?


8

У меня есть несколько сценариев Python в / usr / share / scripts /, которые я часто использую, и я хочу иметь возможность выполнять их, просто написав имя, а не полный путь, как я могу это сделать?

echo $ PATH показывает мне:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer

Поэтому я попытался написать на терминале:

PATH="/usr/share/scripts/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer"
export

Ошибки не отображаются, и echo $ PATH теперь показывает путь моего нового сценария, но когда я запускаю scriptName, я получаю команду not found.

Что я делаю неправильно?


Как ты сделал это прямо раньше?
Игнасио Васкес-Абрамс

Я не делал этого раньше.
grerdas

Вы их не запускали? Я думал, ты сказал, что использовал их часто ...
Игнасио Васкес-Абрамс

@Ignacio Vazquez-Abrams: О, я не понял вашего вопроса, извините, я запустил их как "/usr/share/scripts/scriptName.py args"
grerdas

Ответы:


9

Установите права на исполняемые файлы для сценариев Python с помощью «chmod + x *».
Теперь у вас есть два варианта:

  • Добавьте каталог скриптов в переменную PATH env или
  • Делайте символические ссылки на ваши скрипты одну за другой (или пишите другой скрипт для того же) в /usr/local/binкаталоге.

Пример:
[mzed@node02 test]$ vim printme.py

Содержание файла:

#!/usr/bin/python
print "This is cool!"

-

[mzed@node02 test]$ mv printme.py printme
[mzed@node02 test]$ chmod +x printme
[mzed@node02 ~]$ cd /usr/local/bin/
[mzed@node02 bin]$ sudo ln -s ~/test/printme .
[mzed@node02 bin]$ ls
deskzilla  grails  grails-debug  printme  startGrails
[mzed@node02 bin]$ cd
[mzed@node02 ~]$ printme 
This is cool!
[mzed@node02 ~]$

Я надеюсь, что это поможет вам.


Есть ли возможность сделать версию для Windows? (Я знаю, что это вопрос Linux)
Юлиан Онофрей

1

Хорошо, может быть, я просто старшая школа ...
В / usr / bin добавьте сценарии оболочки с заголовком #! / Bin / bash и без расширения .sh. Тогда в этих скриптах просто запустите python absolutepath.

Почему я думаю, что это лучше, чем другие ответы:
не требует изменения ваших скриптов, чтобы сделать их исполняемыми.
Не требует переименования ваших скриптов.


Не забывай об аргах.
juanitogan

0

Извините за предложение основной вещи .. Вы пробовали "scriptname.py", а не просто "scriptname"?

Кроме того, все сценарии должны иметь разрешения на выполнение (вы можете сделать это, выполнив команду «chmod + x script.py»). Судя по приведенному выше комментарию, вы запускаете их как «/ usr / share / scripts / scriptName. py args ", они должны иметь права на выполнение.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.