这两个Shebang行为什么都兼容?
我刚开始学习编程和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 个回答
4
第二个shebang(也就是文件开头的那行)会被忽略。只有在命令行中指定的文件的shebang行会被用来找到可以执行的程序。
然后,系统会把这个文件交给 flask/bin/python
。对于Python来说,shebang行就只是一些注释而已。
在 __init__.py
文件中的shebang行可能不会起作用;你不能在一个包里面运行一个模块,还指望能继续使用这个包的其他部分;除非你使用 -m
这个选项,否则脚本总是作为 __main__
来运行(如果你使用了这个选项,可能你还需要在你的包里有一个 __main__.py
文件)。