如何在当前虚拟环境中运行可执行的Python脚本?

7
我想要做的是创建一个可执行的Python脚本,这样我就可以在任何地方链接到它并运行它,但我需要在本地虚拟环境中运行它。
目前,在/usr/local/bin中有一个符号链接 -> ~/dev/project/tools/rest_client.py
在项目目录中,权限为:
-rwxr-xr-x  1 luke  staff  3229 Dec  3 10:21 rest_client.py 

rest-client文件

#!/Users/luke/Envs/py2.7/bin/python

def main():
   #do stuff

当我运行rest-client时,我可以像这样从任何目录运行它。

我希望能够将此文件检入 git 存储库并与他人共享,而不是硬编码虚拟环境到文件中,但仍然能够在我的机器上的任何地方执行它。

如果我更改第一行为

#!/usr/bin/python

如果我不通过以下方式执行它,它将无法在虚拟环境中运行:

workon py2.7
python ~/dev/project/tools/rest_client.py

在UNIX中是否有不使用别名等类似方法的适当方式来做到这一点?

1个回答

14
#!/usr/bin/env python 作为您的shebang行,以继承当前的Python环境。

1
我可能误解了,但我认为这不会起作用。看起来你不想继承当前的Python环境,而是要继承特定Python项目的所需环境。例如,如果我有一个依赖于“requests” Python包的rest_client可执行文件,那么我希望可执行文件始终能够正常工作,而不仅仅是在我恰好在已安装“requests”的虚拟环境中。原始提问者指定他们希望能够“从任何地方运行”。 - Christopher Shroba
@ChristopherShroba 在运行时可以使用print(sys.version_info)来查看正在使用的Python解释器。上面的答案意味着,如果在不激活虚拟环境的情况下使用,则会使用默认的Python解释器,但是当激活虚拟环境时,将使用venv的版本。 - Raunaqss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接