【发布时间】:2021-03-29 16:07:05
【问题描述】:
我有一个 python 脚本:
C:\ProgramFiles\myscript.py
并使用 pyinstaller 创建了它的 .exe 版本:
C:\ProgramFiles\myscript.exe
我已确保 C:\ProgramFiles 在我的环境 Windows 路径中,以便我可以从任何位置从命令提示符运行脚本。
现在,问题是,我希望脚本知道它的位置。我尝试了一些可用的解决方案,例如:
sys.argv[0]
或
os.path.abspath(__file__)
但这些解决方案似乎仅在您使用 .py 脚本和 python 路径时才有效。一旦我切换到 .exe 并使用 Windows 环境路径,它就不再起作用了。所以当我从某个奇怪的地方运行程序时,比如:
C:\Users\John>myscript
它总是假设我运行命令的位置是它所在的位置,没有一个解决方案会给我我想要的结果 - 这将是原始位置:
C:\ProgramFiles\
基本上我想要实现的目标 - 我运行一个命令提示符并在其中运行一个 .exe 程序(最初是一个 .py 脚本)。然后windows搜索它的路径变量,看看它是否可以在某个可见的地方找到程序。如果窗口确实找到它,那么它将被执行。而且我希望程序知道 windows 实际在哪里找到它,而不是当前工作目录是什么。
【问题讨论】:
-
可能是
os.path.cwd()?这个函数具体在哪里我不记得了,但是应该在os -
检查文档 - runtime information 部分,尤其是 this part,其中包含用于清除哪个目录的示例脚本。