Python 2.7.3 on OSX 10.8.2Почему использование/usr/bin/env прерывает мой импорт Python?
В настоящее время я пишу скрипт, который импортирует модуль уценки. Я использовал #!/usr/bin/env python
shebang для переносимости. Скрипт работает нормально, когда я запускаю его непосредственно в оболочке через ./myscript.py arg1
Когда я запускаю скрипт из наружной части (логин) оболочки, например, с помощью AppleScript do shell script "/path/to/myscript.py " & quoted form of arg1
, он терпит неудачу с
myscript.py", line 8, in <module>
import markdown
ImportError: No module named markdown
Я думаю, что это может быть проблемой для shebang, поэтому я изменил shebang на мое местоположение python #!/usr/local/bin/python
и, конечно же, скрипт работал нормально.
Так что мой вопрос двоякий:
- Почему используя
/usr/bin/env python
нарушу импорт? - Как я могу избежать этой проблемы, не используя
/usr/local/bin/python
?
Я не думаю, что он использует '/ usr/bin/env python' столько же, сколько с использованием оболочки без входа. Я предполагаю, что '/ usr/local/bin' не находится в' PATH' в такой оболочке или, по крайней мере, не до '/ usr/bin', что объясняет, почему выбрано' python' в последнем. Вы меняете 'PATH' в своих конфигурационных файлах bash? – millimoose
Недостаток, о котором я забыл, заключается в том, что оба метода '#!/Usr/bin/env python' и' #!/Usr/local/bin/python' отлично работали в TextWrangler, и оба дали мне одинаковые результаты при запуске в Terminal. Это вызвало это только от AppleScript, вызвавшего ошибку (Rodrigo корректно). Хотя TextWrangler и Terminal дали мне одинаковые результаты, я смог увидеть разницу, запустив «make shell script» (echo «import sys»; echo 'print sys.path';) |/usr/bin/env python " в редакторе AppleScript. 'make shell script ', который python" 'был бы еще проще. – n8henrie