我正在尝试将 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
在教程中的 python 文件 (run.py
) 中,有以下行:
#!flask/bin/python
这是设置解释器的路径吗?我试过:
#!project-env/bin/python
在我的脚本中它不起作用。有没有办法做到这一点?任何指点将不胜感激!谢谢!
最佳答案
这是教程中使用的一个糟糕的 Shebang 行;它是相对的,这意味着它仅在您碰巧位于直接位于虚拟环境之外的工作目录中时才有效。
也就是说,为了使 shebang 工作,当虚拟环境位于 ~/foo/bar/project-env
中时,当您运行脚本时,它工作的唯一方法是如果您已cd
编辑至~/foo/bar
。即使脚本位于 ~/foo/bar
中,除非您也 cd
到那里,否则它也不会工作。
使用绝对路径,或使用规范的 shebang 行并首先实际激活虚拟环境。我建议后者(我不完全相信 activate
脚本所做的其他调整在某些情况下并不重要),但前者将按照您链接的教程的预期运行。
关于python - 是否可以通过在脚本中包含一行来调用 virtualenv 的 python 解释器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40680839/