В чем разница между «./script.py» и «python script.py» при вызове скрипта Python?

Одно отличие состоит в том, что «./script.py» работает только в том случае, если script.py является исполняемым (как в правах доступа к файлам), а «python script.py» работает несмотря ни на что. Однако я сильно подозреваю, что различий больше, и я хочу знать, в чем они заключаются.

У меня есть веб-сайт Django, и «python manage.py syncdb» работает просто отлично, но «./manage.py syncdb» создает неработающую базу данных по какой-то причине, которая остается для меня загадкой. Возможно, это связано с тем, что syncdb запрашивает имя суперпользователя и пароль из командной строки, и, возможно, использование «./manage.py syncdb» изменяет способ взаимодействия с командной строкой, тем самым искажая пароль. Может быть? Я просто озадачен этим багом. «python manage.py syncdb» полностью исправляет это, так что это просто любопытство.

Спасибо.

Редактировать: Верно, верно, я забыл о необходимости строки shebang #!/usr/bin/python. Но я только что проверил, «python manage.py syncdb» и «./manage.py syncdb» используют один и тот же интерпретатор Python (2.7.2, единственный установленный в Linux Mint 12). Но первое работает, а второе нет.

Могут ли переменные среды, видимые кодом Python, отличаться? Мой код требует, чтобы $LD_LOADER_PATH и $PYTHON_PATH были установлены специально для каждой оболочки.

6
задан SerMetAla 22 March 2012 в 16:27
поделиться