Интерактивный переводчик 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
,