正在执行 Python 个脚本

Executing Python scripts

a Flask tutorial的时候,作者让我先chmod a+x run.py./run.py,而不是像我平时那样简单的python run.py。当我忽略作者的指令并执行python run.py时,我得到了一个ImportError。(我怀疑这个错误与vitrualanv有关。)

所以我的问题是:

之间有什么区别
./run.py

python run.py

我相信你的怀疑是正确的。注意他是如何创建一个名为 flask:

的 virtualenv
virtualenv flask

run.py 包含以下内容:

#!flask/bin/python
from app import app
app.run(debug=True)

第一行通过调用source bin/activate调用shebang, in which the author defines that the python binary should be executed from flask/bin/python. If you instead execute python run.py, your system's default python binary is used. You could fix this by activating the virtualenv。或者通过显式调用 flask/bin/python run.py

看一下文件的第一行:

#!flask/bin/python

表示运行:

$ ./run.py

相当于:

$ flask/bin/python run.py

并且由于flask/bin/python处于虚拟环境中,因此安装了不同的模块。