pyinstaller 打包后运行提示path is on mount'C',start on 'D'

问题:pyinstaller 打包后运行提示path is on mount'C',start on 'D'
描述:python安装在C盘,项目放在D盘,因为是公司内网环境,无法将项目移到C盘去,也无法将python装到D盘。
请帮忙解答一下,万分感谢!

img

这个错误通常是由于你在程序中使用了类似于os.path.abspath这样的函数,它会将路径转换为绝对路径。如果你在 Windows 系统中进行开发,并且在其它系统上运行你的程序,则可能会遇到这样的问题,因为不同的操作系统可能使用不同的驱动器字母或挂载点。

解决方法如下:

  1. 修改程序,使用相对路径而非绝对路径,这样就可以避免路径差异所带来的问题。

  2. 在打包命令中增加参数 --noarchive,这样 PyInstaller 会直接拷贝源代码到输出目录中,而不是压缩成 ZIP 文件,这样也可以避免路径差异的问题。可以尝试一下以下命令:

    pyinstaller --noconsole --onefile your_script.py
    
  3. 修改程序,使用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)  # 打印出图片的绝对路径
    

希望这些方法能够解决你遇到的问题。

在读配置文件的时候,要使用相对路径,不要写死绝对路径