益702 2024-06-08 14:50 采纳率: 100%
浏览 2
已结题

关于打包好py代码块的exe,在excel里调用python时弹出环境太旧

我在成功打包好exe后,删除了anaconda及vccode编辑器,然后运行打包py代码后的exe,黑色窗口在三秒后退出,根据xlwings官方手册指导的在打开的excel里面的vba编辑一段代码,并运行,但是弹出错误提示我的conda环境太旧了,为什么会这样,我打包exe可执行文件就是为了在无需搭建环境的计算机上使用,我表示不明白
.
这是xlwings官方手册对于可执行文件在excel里的调用:

Sub MySample()
    RunFrozenPython "C:\path\to\dist\myproject\myproject.exe arg1 arg2"
End Sub

.
这是excel运行以上宏而出现的弹窗提示:

Your Conda version seems to be too old for the Conda settings.Use the Interpreter setting instead


  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-08 14:50
    关注

    引自免费微信小程序:皆我百晓生

    要解决这个问题,你需要确保在创建可执行文件时使用的Python环境与Excel VBA调用时所使用的环境是一致的。既然你已经删除了Anaconda和VSCode,那么你需要重新考虑如何构建一个独立的、轻量级的Python环境来满足你的需求。

    这里是一个详细的步骤来创建一个新的独立环境并打包你的Python程序为EXE,同时确保它可以在没有预先安装的环境中运行:

    1. 安装Miniconda: Miniconda是Conda的一个精简版,用于快速创建新环境。你可以从Miniconda官网下载适合你操作系统的版本。

    2. 创建新的Python环境: 打开命令行(Windows上的CMD或PowerShell,Mac/Linux上的Terminal),然后按照以下步骤创建一个新的环境:

      conda create -n myenv python=3.8  # 根据需要选择Python版本
      conda activate myenv
      
    3. 安装xlwings和其他依赖: 在新环境中安装xlwings以及其他项目所需的库:

      pip install xlwings numpy pandas  # 假设这些是你项目的依赖
      
    4. 安装pyinstaller: PyInstaller是一个用于将Python应用程序打包成可执行文件的工具。在新环境中安装它:

      pip install pyinstaller
      
    5. 配置PyInstaller: 创建一个名为spec的文件,例如myproject.spec,这个文件将定义如何打包你的应用。在命令行中,进入你的项目目录并运行:

      pyinstaller --name=myproject --onefile your_script.py
      

      这会创建一个名为myproject.spec的文件。打开这个文件,找到Analysis部分,添加binaries项,以便包含xlwings的动态链接库(.dll文件)。如果你使用的是Windows,应该类似这样:

      a = Analysis(['your_script.py'],
                  pathex=['/path/to/your/project'],
                  binaries=[('C:\\Users\\<username>\\.virtualenvs\\myenv\\Lib\\site-packages\\xlwings\\*.dll', 'xlwings')],
                  datas=[],
                  hiddenimports=[],
                  hookspath=[],
                  runtime_hooks=[],
                  excludes=[],
                  win_no_prefer_redirects=False,
                  win_private_assemblies=False,
                  cipher=None,
                  noarchive=False)
      

      <username>替换为你的实际用户名,并确保路径指向正确的xlwings.dll位置。

    6. 重新打包: 修改完spec文件后,再次运行PyInstaller来生成EXE文件:

      pyinstaller myproject.spec
      
    7. 测试可执行文件: 确保在不激活虚拟环境的情况下,也能正常运行生成的EXE文件。这将确保你的应用程序独立于特定的conda环境。

    8. 在Excel中调用: 使用Excel中的VBA宏调用你的EXE文件,就像你在问题描述中提到的那样:

      Sub MySample()
          RunFrozenPython "C:\path\to\dist\myproject\myproject.exe arg1 arg2"
      End Sub
      

    通过上述步骤,你应该能创建一个独立于特定conda环境的EXE文件,可以在任何已安装Python且具有正确依赖关系的机器上运行。注意,xlwings的依赖可能需要在目标计算机上手动安装,或者在打包过程中一起包含进去。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月16日
  • 已采纳回答 6月8日
  • 创建了问题 6月8日

悬赏问题

  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上
  • ¥15 提问一个关于vscode相关的环境配置问题,就是输入中文但是显示不出来,代码在idea可以显示中文,但在vscode不行,不知道怎么配置环境
  • ¥15 netcore使用PuppeteerSharp截图
  • ¥20 这张图页头,页脚具体代码该怎么写?
  • ¥15 关于#sql#的问题,请各位专家解答!
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值