2012-05-02 5 views
1

Я написал программу Python для анализа набора файлов, присутствующих в заданном каталоге, то есть он запрашивает путь, затем он переходит в каталог путей и находит определенные файлы, обрабатывает их и производит вывод файл. Однако каждый раз, когда я хочу выполнить программу на компьютере UNIX, мне нужно написать python my_prog.py. Кроме того, для обработки каталога программа сначала должна быть скопирована в каталог, а затем выполнена.Выполнение кода Python в UNIX

Я хочу сделать так, чтобы в UNIX я печатал my_prog внутри любого каталога, в котором должна выполняться программа, что означает избавление от копирования файла программы в целевой каталог. Как я могу это сделать?

ответ

2

Как всегда, добавьте строку shebang, сделайте это executable и скопируйте ее в каталог в $PATH.

9

вашу программу исполняемый файл с

chmod +x my_prog.py 

поставил

#!/usr/bin/env python 

(или изменения этого) в верхней части исходного файла и поместить my_prog.py скрипт в каталог в путь (т. е. где-то в наборе каталогов, как обычно определяется переменной среды PATH, которая ищет команды, которые должны быть выполнены).

Как только ваша программа находится на вашем пути, вы сможете ее выполнить из любого места, то есть без необходимости размещения программы в текущем каталоге или полного указания пути к ней.

Вы должны быть в состоянии увидеть значение текущей переменной PATH среды в большинстве оболочек с этой командой:

env | grep -i path 

или

echo $PATH 

Только в случае, здесь немного более основной информация о переменной PATH: http://www.cs.purdue.edu/homes/cs348/unix_path.html и http://kb.iu.edu/data/acar.html. Google даст еще много. Надежда это помогает.

+0

но как я сказал, я просто хочу избежать копирования файла prog в каталог по моему пути – diffracteD

+3

Не ваш путь, как в вашем текущем рабочем каталоге, ваш путь, как в наборе таких мест, как '/ usr/bin' что вы можете выполнять команды. Скопируйте его в одно из этих мест один раз, и вы сможете запустить его в любом месте. – Marius

+0

@ Marius верен, и я добавил несколько дополнительных объяснений в свой первоначальный ответ. Надеюсь, это поможет. – Levon