编码和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似乎并不重要-为什么?我以为它们必须与我认为的相同,因为它们将调用该程序的不同版本。

最佳答案

第二个shebang被忽略了。仅在命令行上命名的文件的shebang行用于查找将文件传递到的可执行文件。

Shell将文件移交给flask/bin/python。对Python而言,shebang只是注释。

__init__.py文件中的shebang行可能无效;您无法在包内运行模块,并希望仍按原样使用包的其余部分;除非您使用__main__开关,否则脚本始终以-m的身份运行(在这种情况下,您可能始终需要包中的__main__.py文件)。

关于python - 为什么这些Shebang线都兼容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24591504/

10-15 15:03