为什么这些Shebang线都兼容?

时间:2014-07-05 23:50:52

标签: python

编码和python的新手。

我正在使用flask框架来编写应用程序,当我运行文件时,教程要求我应该包含一个shebang行来调用虚拟环境:

run.py:

#!flask/bin/python

from app_folder import app
app.run(debug = True)

但是,在我的__init__.py文件中有一个不同的shebang行:

#!/usr/bin/env python

from flask import Flask

app = Flask(__name__)
from app_folder import views

当我运行run.py文件时,两个shebang不同似乎并不重要 - 为什么会这样?我认为他们必须是相同的,因为我认为不同的是他们会调用不同版本的程序。

1 个答案:

答案 0 :(得分:4)

第二个shebang完全被忽略了。只有命令行中命名的文件的shebang行才能找到要传递文件的可执行文件。

shell将文件传递给flask/bin/python。对于Python,shebang行是只是注释

__init__.py文件中的shebang行可能不起作用;你不能在一个包内运行一个模块,并希望仍然使用其余的包;除非您使用__main__开关,否则脚本始终以-m运行(在这种情况下,您可能还需要包中的__main__.py文件。)