Интерактивный переводчик Python в строке hashbang

Для моих проектов django я хотел написать простую замену manage.py shell воспользоваться bpython. По сути, все это работает setup_environ(settings) а затем импортировать некоторые распространенные модели (пользователь и т. д.)

в любом случае все работает нормально, когда я бегу bpython -i bshell.py (мой скрипт называется bshell.py). Тогда я подумал, что стану умным и установил строку hashbang в #!/usr/bin/env bpython -i чтобы сделать это еще проще, и это работало на OSX, но не работает сейчас в Ubuntu (10.10).

#!/usr/bin/env python -i тоже не работает, но #!/usr/bin/env bpython работает (но, очевидно, не попадает в интерактивную подсказку).

Это маленький вопрос, но в течение моей жизни это спасет меня от сотен "bpython -i", если я смогу просто запустить свой скрипт как ./bshell.py (на самом деле мне просто любопытно). Есть идеи, почему он не работает на Ubuntu?

Я должен отметить, что я нахожусь в virtualenv, и я уже дважды проверил, что окончания строк в стиле *nix.

1 ответ

Решение

Из википедии:

Another portability problem is the interpretation of the command arguments. 
Some systems, including Linux, do not split up the arguments; for example, 
when running the script with the first line like,

#!/usr/bin/env python -c

That is, python -c will be passed as one argument to /usr/bin/env, 
rather than two arguments.

Если это не имеет большого значения, вам, вероятно, лучше использовать реальный путь к bpython вместо того, чтобы пройти /usr/bin/env,

Другие вопросы по тегам