获取正在执行脚本的Python二进制文件路径

53

我有一个Pylons控制器(无关紧要,但解释了我为什么有这个需求),名为starter.py,它使用以下方式启动另一个进程:

retcode = subprocess.call(('python','/path/to/myScript.py'))

现在应用程序在虚拟环境中运行,因此调用python二进制文件不正确,因为它无法访问安装在我的虚拟环境中的site-packages。应改为:
retcode = subprocess.call(('path/to/virtual/env/bin/python','/path/to/myScript.py'))

path/to/virtual/env/bin/python与运行starter.py的相同。

有没有机会不设置此路径(例如在.ini文件中)并检索它?

1个回答

108

2
最快的答案,我会在被允许时接受。谢谢。 - neurino
我发现了一个特殊情况,这个情况下它并不成立——在Sublime Text 3中内置的Python中,sys.executable只是python3 - Paul Bissex
1
@PaulBissex:对于嵌入式解释器,可能甚至不存在独立的Python二进制文件,因此在这些情况下你所能做的并不多。一般来说,最好尝试在当前解释器内运行Python代码,而不是分叉到子解释器中。 - Sven Marnach
如果文件是自执行的呢?比如说,myScript.py 被编译为 myScript.exe 了呢?@SvenMarnach - TSR
@TSR 我从未这样做过(我不使用Windows),所以我不能确定。然而,链接的文档表明,在这种情况下,sys.executable将是None或空字符串。 - Sven Marnach
在我的情况下,which python3 在 macOS 命令行中有效。 - Saurabh Gupta

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