Как открыть скрипты Python напрямую, введя их имя в терминале (Mac OS X)

1938
Haffi112

Я работаю над установкой django и запуском его в моей системе.

У меня проблема, хотя, в этом уроке создание проекта объясняется с помощью команды

django-admin.py startproject mysite 

Моя проблема в том, что это не работает. Я перешел в каталог, где находится django-admin.py, и выполнил команду

chmod +x django-admin.py 

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

python /location/of/django-admin.py startproject mysite 

что дало результат, который я ожидал. Моя проблема: что мне нужно изменить / настроить так, чтобы команда

django-admin.py startproject mysite 

было бы достаточно?

Вот несколько экспериментов:

21:09~/Desktop/HI/NSN/Polls > django-admin.py startproject mysite -bash: django-admin.py: command not found 21:09~/Desktop/HI/NSN/Polls > ./django-admin.py startproject mysite -bash: ./django-admin.py: No such file or directory 21:09~/Desktop/HI/NSN/Polls > python django-admin.py startproject mysite python: can't open file 'django-admin.py': [Errno 2] No such file or directory 21:09~/Desktop/HI/NSN/Polls > /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py startproject prufa1 -bash: /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py: /opt/local/bin: bad interpreter: Permission denied 21:09~/Desktop/HI/NSN/Polls > sudo /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py startproject prufa1Password: sudo: unable to execute /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py: Permission denied 21:09~/Desktop/HI/NSN/Polls > sudo /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py startproject prufa1sudo: unable to execute /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py: Permission denied 21:09~/Desktop/HI/NSN/Polls > python /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py startproject prufa1 21:09~/Desktop/HI/NSN/Polls > ls mysite prufa1 

Окончательное редактирование: проблема решена, правильное решение см. В ответе Яна С. Спасибо всем за помощь, это было очень быстро!

1
Что происходит (например, сообщение об ошибке), когда оно «не работает»? Достаточно добавить путь (или явно указать папку, как в `. / Django-admin.py`) и сделать ее исполняемой. Daniel Beck 13 лет назад 0

4 ответа на вопрос

3
Ian C.

Есть немного более общая версия подсказки @Matt Jenkins hashbang (! #), Которую вы можете использовать, чтобы сделать скрипт немного более переносимым. Убедитесь, что первая строка в файле:

#!/usr/bin/env python ...everything else... 

Это говорит: «Ищите программу по имени python, выполнив поиск my, PATHи запустите остальную часть этого сценария с этой программой».

Вам также необходимо установить бит выполнения в скрипте с помощью:

chmod +x django-admin.py 

Я упоминаю это для полноты, отмечая, что вы уже сделали это.

Наконец, PATHпеременная фактически не содержится .в ней (текущий рабочий каталог). Это мера предосторожности, и я не рекомендую изменять эту настройку (она не позволяет вам звонить, ./rmкогда вы имели в виду, rmнапример, оболочку ). Так что вам нужно вызвать скрипт с:

 ./django-admin.py startproject mysite 

Это говорит «ищите в текущем рабочем каталоге django-admin.py» вместо «искать PATHпеременную», что и происходит, если вы пропустите ./часть.

1
Majenko

Первая строка в файле должна содержать программу, которая запускает скрипт с префиксом #! (известный как hashbang)

Например:

#!/path/to/python ...python code follows... 

Затем вы можете установить исполняемый бит для файла, и оболочка будет интерпретировать его как скрипт, используя программу, найденную в первой строке в качестве интерпретатора.

Это часто используется со сценариями оболочки, например:

#!/bin/sh  for FILE in `ls` { echo "Filename: $" } 
Глава сценария уже сказала #! / Path / to / python, поэтому я не понимаю, почему он не работает> _ <(у него был правильный путь, чтобы избежать недоразумений) Haffi112 13 лет назад 0
Является ли путь к питону правильным путем к питону? Проверьте с __whereis python__ Majenko 13 лет назад 0
Да, это правильный путь. Haffi112 13 лет назад 0
Ну, теперь я в замешательстве ... Majenko 13 лет назад 1
Ах, я думаю, я вижу, что здесь происходит. Файл, который вы пытаетесь запустить, находится не в известном месте (т.е. не в вашем пути), а в /opt/local/lib/python2.4/site-packages/django/bin/. Вам нужно добавить / opt /local/lib/python2.4/site-packages/django/bin/ в вашу переменную среды $ PATH, тогда вы можете вызывать ее просто по имени. Majenko 13 лет назад 0
Извините, я нашел решение, у меня было. в определении пути, как указал Иан С, я не могу понять, как я этого не видел ...> _ <спасибо за помощь, хотя! Haffi112 13 лет назад 0
0
Tom Wijsman
  1. Выберите файл в Finder, щелкнув его один раз.

  2. В меню « Файл» выберите « Информация» .

  3. В информационном окне щелкните треугольник рядом с « Открыть с помощью », чтобы развернуть этот раздел окна.

  4. В раскрывающемся меню выберите приложение, которое вы хотите использовать для открытия файла.

- Источник: Университет Индианы - КБ: Как назначить приложение для открытия файлов определенных типов?

Какое приложение я должен выбрать, чтобы открыть файл? Я использую Python 2.4 с Django 1.2.4. Я также не вижу, как это имеет отношение к выполнению команды в терминале. Haffi112 13 лет назад 0
@ Haffi112: Python. Что касается командной строки, вам нужен [shebang] (http://superuser.com/questions/251947/how-to-open-python-scripts-directly-by-typing-in-their-name-in-terminal- макинтош-ос-х / 251956 # 251956) ... Tom Wijsman 13 лет назад 0
Да, я пробовал это, это все еще не работает = / Haffi112 13 лет назад 0
0
Yeri Armenta

Когда вы изменяете права доступа к файлу django-admin.py, вы должны написать это:

sudo chmod + x django-admin.py

Работает для меня

Проблема, по-видимому, связана со строкой `#!`, А не с разрешениями файла сценария. David Richerby 8 лет назад 0

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