是否可以通过在脚本中包含一行来调用virtualenv的python解释器?

时间:2016-11-18 15:34:13

标签: python virtualenv shebang

我试图将SQLAlchemy与python一起使用。我的设置是这样的:

mkdir project
cd project
virtualenv project-env
project-env/bin/pip install SQLAlchemy

我通过导航到bin目录并使用:

来激活环境
source activate

但是我最近刚刚关注了一些Flask教程(Flask也安装在虚拟环境中),并注意到正确运行脚本不需要此步骤。 https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world

在教程(run.py)的python文件中有一行:

#!flask/bin/python

这是设置解释器的路径吗?我试过了:

#!project-env/bin/python

在我的脚本中,它不起作用。有没有办法做到这一点?任何指针都会非常感激!谢谢!

1 个答案:

答案 0 :(得分:2)

这是教程中使用的可怕的shebang线;它是相对的,这意味着只有当你碰巧在一个直接在虚拟环境之外的工作目录时它才有效。

也就是说,为了让shebang工作,当虚拟环境在~/foo/bar/project-env时,当你运行脚本时,唯一可行的方法就是你cd编辑~/foo/bar 1}}。即使脚本位于~/foo/bar中,除非您cd在那里,否则它将无效。

使用绝对路径,或使用规范的shebang线并首先实际激活虚拟环境。我推荐后者(我不完全相信activate脚本的其他调整在某些情况下并不重要),但前者的行为与你所链接的教程一样。