【发布时间】:2019-07-10 00:54:22
【问题描述】:
我用 python 制作了一个程序,当使用 python 解释器运行时,它可以正确运行。它从同一目录中读取一些文件。为了从其他路径运行脚本,脚本将其工作目录更改为自己的位置。
import os
abspath = os.path.realpath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)
但是当我将它打包成 .exe 时这不起作用。因为在运行 .exe 时,__file__ 变量是"main.py"。
我知道可以通过显式设置固定路径来修复:
os.chdir('/Fixed/Path')
但是有没有优雅的解决方案?
【问题讨论】:
-
你试过
import sys; print sys.executable吗?或os.path.dirname(sys.argv[0]) -
是的,看到
sys.executable等于这样一个打包的 Python 脚本是非常有趣的。如果完整的解释器被打包在一起,它可能会成功 -
@wpercy 谢谢!我尝试了 sys.executable 并且它有效。这是我的程序的确切 .exe 路径。
-
所以当我写
os.chdir(sys.executable)时,它在使用 python 解释器运行时将不起作用:)。现在有什么建议? -
os.chdir(sys.executable)正在尝试将当前工作目录更改为可执行文件,不是它所在的文件夹。