PyPandoc 与 PyInstaller 结合使用

2024-05-01

我安装了 PyInstaller 来为我的 python 脚本创建可执行文件,效果很好。我使用 PyPandoc 创建.docx报告,当正常的 python 文件运行时,它也可以正常运行,但不能从 PyInstaller 生成的可执行文件运行。它给出了错误:

Traceback (most recent call last):
  File "src\flexmodel_postcalc.py", line 295, in postcalculate_everything
  File "src\flexmodel_postcalc.py", line 281, in generate_report_docx
  File "src\flexmodel_report_docx.py", line 118, in generate_text_useages_docx
  File "pypandoc\__init__.py", line 50, in convert
  File "pypandoc\__init__.py", line 70, in _convert
  File "pypandoc\__init__.py", line 197, in get_pandoc_formats
  File "pypandoc\__init__.py", line 336, in _ensure_pandoc_path
OSError: No pandoc was found: either install pandoc and add it
to your PATH or install pypandoc wheels with included pandoc.

在可执行文件创建过程中,我没有看到有关 PyPandoc 的奇怪问题。如何将 Pandoc 包含到我的可执行文件中,以便其他人(无需安装 Python 和/或 Pandoc)可以使用可执行文件并创建.docx报告?

编辑:工作流程包括以下步骤:

  1. 创建一个包含以下代码的文件:

    import pypandoc
    pypandoc.convert(sou‌​rce='# Sample title\nPlaceholder', to='docx', format='md', outputfile='test.doc‌​x')
    
  2. 将此文件另存为pythonfile.py

  3. 使用 PyInstaller 创建可执行文件:

    pyinstaller --onefile --clean pythonfile.py
    
  4. 现在,可执行文件应该在未安装 Pandoc(或 PyPandoc)的计算机上运行。


这里有两个问题。第一个是pypandoc needs pandoc.exe上班。这不是由pyinstaller自动,但您可以手动指定。

要做到这一点,你必须创建一个.spec file https://pythonhosted.org/PyInstaller/spec-files.html#using-spec-files。我生成并使用的看起来像这样:

block_cipher = None

a = Analysis(['pythonfile.py'],
             pathex=['CodeDIR'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='EXEName',
          debug=False,
          strip=False,
          upx=True,
          console=True , 
          resources=['YourPandocLocationHere\\\\pandoc.exe'])

您可以使用以下方式构建可执行文件pyinstaller myspec.spec。不要忘记更改路径和name范围。

如果您在目录模式下构建它,这应该足够了。然而,对于one-file模式,由于 pyinstaller 的方式,事情有点复杂引导加载程序进程 https://pythonhosted.org/PyInstaller/advanced-topics.html#bootloader作品。这pandoc.exe文件在执行期间解压缩到临时文件夹中,但执行发生在原始文件夹中.exe文件夹。根据这个问题 https://stackoverflow.com/questions/7674790/bundling-data-files-with-pyinstaller-onefile,如果您运行冻结的代码,则必须在调用 pypandoc 更改当前文件夹之前将以下行添加到代码中。

if hasattr(sys, '_MEIPASS'):
    os.chdir(sys._MEIPASS)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyPandoc 与 PyInstaller 结合使用 的相关文章

  • 如何以“正确”的方式处理带有空字节的 Python unicode 字符串?

    Question PyWin32 似乎很乐意将 null 终止的 unicode 字符串作为返回值 我想以 正确 的方式处理这些字符串 假设我得到一个像这样的字符串 u C Users Guest MyFile asy x00 x00sy
  • python 中的并行处理

    在 python 2 7 中进行并行处理的简单代码是什么 我在网上找到的所有示例都很复杂 并且包含不必要的代码 我该如何做一个简单的强力整数分解程序 在每个核心 4 上分解 1 个整数 我真正的程序可能只需要2个核心 并且需要共享信息 我知
  • sklearn 中的 pca.inverse_transform

    将我的数据拟合后 X 我的数据 pca PCA n components 1 pca fit X X pca pca fit transform X 现在 X pca 具有一维 当我根据定义执行逆变换时 它不是应该返回原始数据 即 X 二维
  • 在没有模型的情况下将自定义页面添加到 django admin

    我正在尝试在没有模型关联的情况下向管理员添加自定义页面 这就是我迄今为止所取得的成就 class MyCustomAdmin AdminSite def get urls self from django conf urls import
  • Keras:如何保存模型或权重?

    如果这个问题看起来很简单 我很抱歉 但是阅读 Keras 保存和恢复帮助页面 https www tensorflow org beta tutorials keras save and restore models https www t
  • Emacs 24.x 上的 IPython 支持

    我对 IPython 与 Emacs 的集成感到困惑 从 Emacs 24 开始 Emacs 附带了自己的python el 该文件是否支持 IPython 还是仅支持 Python 另外 维基百科 http emacswiki org e
  • 结构差异 sudo() run('sudo 命令')

    我想知道函数之间有什么区别sudo 和函数run sudo u user smth 文档上有 sudo 在所有运行方式上都是相同的 除了它总是换行 调用 sudo 程序中的给定命令以提供超级用户 特权 但有几次 sudo cmd 提示我输入
  • 在 matplotlib 中的极坐标图上移动径向刻度标签

    From matplotlib 示例 http matplotlib org examples pylab examples polar demo html import numpy as np import seaborn as sbs
  • Gspread如何复制sheet

    在 Stackoverflow 上进行谷歌搜索和搜索后 我想我找不到有关如何复制现有工作表 现有模板工作表 并将其保存到另一个工作表中的指南 根据文档 有重复表 https gspread readthedocs io en latest
  • 从扫描文档中提取行表 opencv python

    我想从扫描的表中提取信息并将其存储为 csv 现在我的表提取算法执行以下步骤 应用倾斜校正 应用高斯滤波器进行去噪 使用 Otsu 阈值进行二值化 进行形态学开局 Canny 边缘检测 进行霍夫变换以获得表格行 去除重复行 10像素范围内相
  • Django 的 request.FILES 出现 UnicodeDecodeError

    我在视图调用中有以下代码 def view request body u for filename f in request FILES items body body Filename filename n f read n 在某些情况下
  • 在 Windows 上使用 apache mod_wsgi 运行 Flask 应用程序时导入冲突

    我允许您询问我在 Windows 上使用您的 mod wsgi portage 托管 Flask 应用程序时遇到的问题 我有两个烧瓶应用程序 由于导入冲突 只有一个可以同时存在 IE 如果请求申请 1 我有回复 然后 如果我请求应用程序 2
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • 用 python 编写的数学语法检查器

    我需要的只是使用 python 检查字符串是否是有效的数学表达式 为了简单起见 假设我只需要 运算符 也作为一元 带有数字和嵌套括号 为了完整性 我还添加了简单的变量名称 所以我可以这样测试 test 3 2 1 valid test 3
  • Jython 和 SAX 解析器:允许的实体不超过 64000 个?

    我做了一个简单的测试xml saxJython 中的解析器在处理大型 XML 文件 800 MB 时遇到以下错误 Traceback most recent call last File src project xmltools py li
  • 使用 Keras np_utils.to_categorical 的问题

    我正在尝试将整数的 one hot 向量数组制作为 keras 将能够使用的 one hot 向量数组来拟合我的模型 这是代码的相关部分 Y train np hstack np asarray dataframe output vecto
  • 混淆矩阵不支持多标签指示符

    multilabel indicator is not supported是我在尝试运行时收到的错误消息 confusion matrix y test predictions y test is a DataFrame其形状为 Horse
  • 如何与其他用户一起使用 pyenv?

    如何与其他用户一起使用 pyenv 例如 如果我在用户 test 的环境中安装了 pyenv 则当我以 test 身份登录时可以使用 pyenv 但是 当我以其他用户 例如 root 身份登录时如何使用 pyenv 即使你这么做了 我也会s
  • 将上下文管理器的动态可迭代链接到单个 with 语句

    我有一堆想要链接的上下文管理器 第一眼看上去 contextlib nested看起来是一个合适的解决方案 但是 此方法在文档中被标记为已弃用 该文档还指出最新的with声明直接允许这样做 自 2 7 版起已弃用 with 语句现在支持此
  • 多个对象以某种方式相互干扰[原始版本]

    我有一个神经网络 NN 当应用于单个数据集时 它可以完美地工作 但是 如果我想在一组数据上运行神经网络 然后创建一个新的神经网络实例以在不同的数据集 甚至再次同一组数据 上运行 那么新实例将产生完全错误的预测 例如 对 XOR 模式进行训练

随机推荐

  • 拉伸图像以填充浏览器窗口的宽度

    我有一个图像 我希望宽度能够填满浏览器窗口 无论窗口大小如何 如何在 HTML 和 CSS 中执行此操作 您可以添加宽度和高度为100 的div 也可以设置图像宽度和高度为100 div img src https picsum photo
  • 在 JavaScript 中使用科学计数法的陷阱

    这个问题是not寻求开发人员代码格式化意见 就我个人而言 我更喜欢在 JS 代码中使用科学计数法 因为我相信它更具可读性 为我 6e8比600000000 话虽这么说 我只是在寻找在 JS 中以科学记数法指定数字的潜在风险和缺点 我在野外并
  • playframework 全局设置 @Required 字段的自定义消息

    我正在寻求有关翻译 Play 框架 2 2 中的验证消息的帮助 我有必填字段 FE Required message To pole jest wymagane public String miesiac Required public S
  • 在 Gradle 中跳过禁用任务的依赖执行?

    是否有可能not当任务将被跳过时执行该任务的依赖项 在下面的例子中 我想jar 以及依赖项jar to not执行时如果服务器已经在运行则执行runServerTests 在这种情况下 服务器将由另一个进程启动 apply plugin j
  • PHP 未定义索引/未定义偏移解决方法[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 注意 未定义的变量 和 注意 未定义的索引 https stackoverflow com questions 4261133 php notice undefined variable an
  • 经典的 asp/vbscript - 使用正则表达式修改所有 href

    在经典 ASP VB 脚本 中 我需要通过对当前 url 进行编码并在其前面挂起来修改字符串中包含的多个不同的 href 基本上 我想让所有的 href 都通过我的redirect asp 并将现有的 href 编码传递到新链接中 例如 现
  • JavaScript 日期对象 英国日期

    我有以下代码 datePicker change function dateSet datePicker val dateMinimum dateChange dateSetD new Date dateSet dateMinimumD n
  • 什么是克朗?我该如何使用这个? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions http
  • 如何扩展 gradle 的 clean 任务来删除文件?

    到目前为止 我已将以下内容添加到我的 build gradle 中 apply plugin base clean lt lt delete rootDir api library auto generated classes printl
  • 注册不起作用 - 服务器返回 404 错误代码

    MongoDB Stitch iOS SDK 注册问题 我试过这个 let stitchClient StitchClient appId
  • 在 php 8.1.0 上使用 phpunit 9.4 捕获警告、通知和弃用

    Quoting https phpunit readthedocs io en 9 5 writing tests for phpunit html testing php errors warnings and notices https
  • 如何使用 -fPIC 标志重新编译 libperl.a 目标文件?

    当试图修复一些问题时出现了这个问题安装问题 https stackoverflow com q 43191675 2173773 with QtCore4 https metacpan org pod QtCore4 在某一点make尝试运
  • 使用 pdfbox 1.8.8 进行视觉签名

    我正在尝试生成带有视觉签名和 pdfbox 的 PDF 我有两个流 似乎 pdfbox 只能处理文件 如果没有三个临时文件 我就无法使其工作 我可以看到从here https github com apache pdfbox blob b7
  • 如何根据列表中的先前值过滤Haskell中的列表元素?

    我正在努力在 Haskell 中创建一个函数 该函数根据列表中前一个元素的条件过滤列表的数字 Example 前一个数字是 2 的倍数 myFunction 1 2 5 6 3 expected output 5 3 我知道如何申请filt
  • Symfony 功能测试失败,但相同的请求在浏览器中有效

    我跟着Symfony 文档 http symfony com doc current book testing html functional tests关于功能测试 以便编写我的第一个测试 但我有一些问题 我通过浏览器得到的响应效果很好
  • Heroku:无法访问该网站

    我的 heroku 应用程序在构建后无法访问 日志显示 Web 服务器节点和工作节点都在监听 这是一个由 Gunicorn 运行的 Flask 应用程序 它有 2 个插件 newrelic 和 redistogo Error This si
  • 面临减法时的算法复杂性

    我必须简化以下公式才能获得算法的时间复杂度 n 2 n 3 是否有任何适用的规则可以让我进一步简化这个表达式为更 常见 的 n 2 或类似的东西 我假设这就是结果 可能是错误的 我根本不知道如何处理这里的减法 通常 如果两个值相加 您只考虑
  • OpenGL:调试“单通道线框渲染”

    我正在尝试实现论文 单通道线框渲染 它看起来很简单 但它给了我所期望的厚暗值 论文没有给出计算海拔高度的确切代码 所以我按照自己认为合适的方式进行了操作 代码应该将三个顶点投影到视口空间中 获取它们的 高度 并将它们发送到片段着色器 片段着
  • 无法在 Dockerfile 中运行 sysctl 命令

    我正在尝试制作我的第一个 dockerfile 我对此很陌生 并且我需要系统来运行命令sysctl w kernel randomize va space 0 它是一个实验室环境 但我收到错误 sysctl 设置键 kernel rando
  • PyPandoc 与 PyInstaller 结合使用

    我安装了 PyInstaller 来为我的 python 脚本创建可执行文件 效果很好 我使用 PyPandoc 创建 docx报告 当正常的 python 文件运行时 它也可以正常运行 但不能从 PyInstaller 生成的可执行文件运