对于我的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
有效(但显然不会进入交互式提示)。
这是一个小问题,但在我的生命中,如果我可以像./bshell.py
那样运行我的剧本,它将为我节省数百个“bpython -i”(真的我只是好奇)。任何想法为什么它不适用于Ubuntu?
我应该注意到我在使用virtualenv,我已经仔细检查了行结尾是* nix风格。
答案 0 :(得分:0)
来自wikipedia:
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
。