问题:pyinstaller 打包后运行提示path is on mount'C',start on 'D'
描述:python安装在C盘,项目放在D盘,因为是公司内网环境,无法将项目移到C盘去,也无法将python装到D盘。
请帮忙解答一下,万分感谢!
这个错误通常是由于你在程序中使用了类似于os.path.abspath
这样的函数,它会将路径转换为绝对路径。如果你在 Windows 系统中进行开发,并且在其它系统上运行你的程序,则可能会遇到这样的问题,因为不同的操作系统可能使用不同的驱动器字母或挂载点。
解决方法如下:
修改程序,使用相对路径而非绝对路径,这样就可以避免路径差异所带来的问题。
在打包命令中增加参数 --noarchive
,这样 PyInstaller 会直接拷贝源代码到输出目录中,而不是压缩成 ZIP 文件,这样也可以避免路径差异的问题。可以尝试一下以下命令:
pyinstaller --noconsole --onefile your_script.py
修改程序,使用sys._MEIPASS
来获取程序所在的路径。这个变量是 PyInstaller 在打包时自动创建的,表示程序解压的临时路径,可以用来获取程序所在的路径。例如:
import sys
import os
def get_resource_path(relative_path):
"""返回资源文件的绝对路径"""
try:
# PyInstaller创建的临时路径
base_path = sys._MEIPASS
except Exception:
# 当前工作路径
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
# 使用时,相对路径从资源文件所在的文件夹开始
image_path = get_resource_path("images/sample.jpg")
print(image_path) # 打印出图片的绝对路径
希望这些方法能够解决你遇到的问题。
在读配置文件的时候,要使用相对路径,不要写死绝对路径