Этот вопрос касается запуска файлов python в терминале, которые не хранятся в домашнем каталоге. Я думаю, что я решил первую часть этой головоломки, изменив мой путь так, чтобы он включал каталог, в котором хранятся мои программы на Python.

Так где как изначально echo $PATH даст следующее: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Теперь это дает: {{Х0}}

Однако, несмотря на то, что в моем пути сейчас находится правильная папка, ни один из файлов python внутри этой папки не запускается. Например, там есть файл с именем recap.py, когда я открываю терминал и набираю: {{Х0}} Я получил:

python: can't open file 'recap.py': [Errno 2] No such file or directory

Если я просто наберу recap.py (т.е. опуская бит 'python'), я получу: { { Х1 }}

Кто-нибудь может просветить меня? В идеале я хочу настроить его так, как только терминал откроется, все, что мне нужно сделать, это ввести имя файла, а не даже python.

Я часами пытался разобраться в этом, любая помощь приветствуется.

Павел.

2
Paul Patterson 1 Июл 2010 в 17:37

7 ответов

Лучший ответ

Включение каталога, в котором находится команда в вашем $ PATH, означает, что вы можете запускать команды в этом каталоге из любого места. Но в первом примере вы запускаете команду "python" с recap.py в качестве аргумента. Таким образом, ваша оболочка не ищет ваш $ PATH, чтобы найти место, где находится recap.py. Чтобы сделать recap.py запускаемым как команда, посмотрите это:

http://en.wikipedia.org/wiki/Shebang_(Unix)

Короче говоря, вам нужно включить #!/usr/bin/env python в качестве первой строки и chmod файл для исполняемого файла (chmod u+x recap.py).

8
dreeves 1 Июл 2010 в 13:43

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

1
Daenyth 1 Июл 2010 в 16:38

Я не знаю, насколько это полезно для вас сейчас, потому что это происходит несколько лет спустя, но я боролся с очень похожей проблемой уже добрый час. Я использую Python IDLE, чтобы сохранить мой код в виде файла .py. Когда я пытался запустить его в терминале, я получал синтаксическую ошибку в первой строке. Моя первая строка кода была

#!/usr/bin/env python

Но интерпретатор читал мою первую строку как описание оболочки IDLE "(Python w.7.5 (v2.75: ab05e7dd2788 ... и т. д.)". Мне нужно было удалить все эти строки, включая первую >>> для того, чтобы терминал открыл мой файл. Поэтому я удалил все дерьмо, где места IDLE были его первыми строками, и вуаля! Это сработало. Вот как я заставил его работать один раз в терминале:

cd /directory/where/you/have/your/file
chmod +x filename.py
python filename.py

Это оно!

0
Joshua Taylor 22 Окт 2013 в 00:26

Возможно, вы уже пробовали это раньше, но однажды я столкнулся с похожими проблемами, и этот процесс мне подходит. В каталоге, где хранится recap.py:

chmod +x recap.py
./recap.py

./ является ключевой частью, так как работает как полный путь к каталогу. Это также предполагает, что у вас есть

#!/usr/bin/env python

Или что-то похожее в первой строке вашей программы. Первая строка из первых двух символов называется shebang и указывает, что файл скрипт, который будет выполняться интерпретатором, указанным путем, следующим за ним. Итак, как и предполагали другие, ваш интерпретатор Python может находиться где-то, кроме / usr / bin (возможно, в / bin), поэтому вам нужно найти это и включить эту строку в начало любого сценария Python, который вы хотите выполнить из терминала.

Если вы не знаете, где находится python, вы можете использовать:

which python

В терминале, который должен напечатать путь к вашей установке Python. Вы можете использовать этот путь после своего шебанга.

3
Wilduck 1 Июл 2010 в 16:04

Печатать:

which python 

В терминал, и это должно получить вам путь к питону. Поместите это поверх вашего сценария, как другие предложили:

#! /path/to/python

Также убедитесь, что он исполняемый (весь материал chmod). Вы можете проверить это, набрав:

ls -l

Файл должен иметь что-то вроде -rwx-r - r-- рядом с ним. X означает, что это исполняемый файл.

1
Paul 1 Июл 2010 в 15:56

Убедитесь, что первая строка в каждом скрипте - «#! / Usr / bin / env python» (без кавычек). Сделайте "chmod + x file.py" для каждого файла. После этого вы сможете запускать каждый скрипт как file.py.

1
mikerobi 1 Июл 2010 в 13:41

Попробуйте набрать:

which env

Чтобы узнать, каков путь env в вашей системе. Измените путь shebang, чтобы он совпадал с полным путем команды env, найденной с помощью команды which. Если это не удается. Это означает, что у вас либо не установлен env, либо env установлен по системному пути. Попробуйте указать полный путь к исполняемому файлу python вместо использования env, набрав:

which python

И используя полный путь, вернемся вместо шебанга / path / to / env. Первая строка вашего recap.py должна выглядеть примерно так:

#!/path/to/python
0
freegnu 1 Июл 2010 в 16:16