找到python可执行文件的路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找到python可执行文件的路径相关的知识,希望对你有一定的参考价值。

我有一个脚本,需要能够将自己的完整路径保存到变量中。到目前为止,我尝试过:

sys.argv[0]
os.path.realpath(__file__)
os.path.abspath(__file__)

这些都与我的常规python脚本一起工作。但是,一旦我使用pyinstaller将其转换为可执行文件,上述方法就不再适用于获取.exe的路径。他们要么将.exe检测为.py,要么根本不检测它。为什么这样,我可以使用哪种方法总是得到脚本的名称,无论是.py还是.exe。是否有一个函数可以获取文件的完整路径,无论它是普通的.py文件还是python .exe文件。我在使用Windows 10的python 2.7上

答案

这可能会成功,但如果你找到一个更好的解决方案,请毫不犹豫地放弃它。

import subprocess

path = subprocess.Popen('cd')
另一答案

这适用于Py 3.4 / Win 10。

from win32api import GetCommandLine, GetFullPathName

print (GetCommandLine())

print (GetFullPathName('temp.exe'))

输出:

Microsoft Windows [Version 10.0.15063]
(c) 2017 Microsoft Corporation. All rights reserved.

C:scratchdist	emp>temp
temp
C:scratchdist	emp	emp.exe

C:scratchdist	emp>

我显示了命令行,因为您可能必须执行其他步骤来隔离脚本的文件名以便在GetFullPathName中使用。

编辑:我做了更正!因为我知道脚本的名称(temp.py),我知道pyinstaller将分配给可执行文件的名称(temp.exe),我可以使用GetFullPathName来对付它。

另一答案

这适用于所有文件扩展名.py,.exe,即使.exe更改为.scr,程序仍然有效:

import sys
import os
print os.path.abspath(sys.argv[0])

命令行输出:

C:UsersangusDesktop>t.py
C:UsersangusDesktop	.py

C:UsersangusDesktopdist	>t.exe
C:UsersangusDesktopdist		.exe

C:UsersangusDesktopdist	>t.scr
C:UsersangusDesktopdist		.scr

以上是关于找到python可执行文件的路径的主要内容,如果未能解决你的问题,请参考以下文章

未找到 xcode 13 可执行文件

执行包含完整路径的python可执行文件和脚本

如何在 C 中找到可执行文件的位置? [复制]

python3找到当前文件执行路径,并加入临时环境变量

怎么把 python 打包成 exe 可执行文件

如何获取调用 python 可执行文件的路径 [重复]