【问题标题】:Executing Python scripts执行 Python 脚本
【发布时间】:2016-08-05 09:29:18
【问题描述】:
在阅读a Flask tutorial时,作者让我先chmod a+x run.py再./run.py,而不是像我通常那样简单地python run.py。当我忽略作者的指令并执行python run.py时,我得到了一个ImportError。(我怀疑这个错误与vitrualanv有关。)
所以我的问题是:有什么区别
./run.py
和
python run.py
【问题讨论】:
标签:
python
bash
command-line-interface
virtualenv
execution
【解决方案1】:
我相信你的怀疑是正确的。注意他是如何创建一个名为 flask 的 virtualenv 的:
virtualenv flask
run.py 包含以下内容:
#!flask/bin/python
from app import app
app.run(debug=True)
第一行叫做shebang,作者定义python二进制应该从flask/bin/python执行。如果您改为执行python run.py,则使用系统的默认python 二进制文件。你可以通过activating the virtualenv 来解决这个问题,通过调用source bin/activate。或者通过显式调用flask/bin/python run.py
【解决方案2】:
看一下文件的第一行:
#!flask/bin/python
表示运行:
$ ./run.py
相当于:
$ flask/bin/python run.py
由于flask/bin/python是在虚拟环境中,所以安装了不同的模块。