首页 > 编程问答 >PYSWIP 无法在 pyinstaller 可执行文件中工作

PYSWIP 无法在 pyinstaller 可执行文件中工作

时间:2024-08-02 04:36:47浏览次数:17  
标签:python prolog pyinstaller

我用 TKINKTER 和 PYSWIP 用 python 和 prolog 完成了一个项目。当使用“pyinstaller -w --onefile main.py”创建可执行文件时,它给我一个错误,因为它没有使用 PYSWIP 库。如何将此包导入到我的可执行文件中?注意:Pyswip是通过pip安装的

[ enter image description here 1


以下是解决“PyInstaller 可执行文件中 Pyswip 不工作”问题的方法,以及可能出现此问题的解释:

理解问题

PyInstaller 在将 Python 脚本打包成可执行文件时,有时难以正确包含非纯 Python 库(如 Pyswip,它依赖于 Prolog 引擎)。这通常是因为:

  • 外部数据文件: Pyswip 可能需要访问 Prolog 引擎文件或其他数据文件,而 PyInstaller 默认情况下不会自动包含这些文件。
  • 运行时链接: Pyswip 可能在运行时动态加载库,而 PyInstaller 需要明确指示才能在可执行文件中包含这些库。

解决方案

  1. 使用 --hidden-import 标志:

PyInstaller 允许使用 --hidden-import 标志指定未在代码中直接导入但的应用程序需要的模块。在的情况下,尝试在 PyInstaller 命令中添加以下内容:

bash pyinstaller -w --onefile --hidden-import=pyswip.prolog main.py

  1. 手动复制 Prolog 引擎:

  2. 找到的 Prolog 引擎安装目录。这通常类似于 C:\Program Files\swipl C:\Users\<Your User>\AppData\Local\Programs\swipl

  3. 在的 PyInstaller 项目目录中创建一个名为 swipl 的文件夹(如果它不存在)。
  4. 将 Prolog 引擎安装目录中的 所有内容 复制到项目中的 swipl 文件夹中。
  5. 修改的 PyInstaller 命令,添加以下内容,以便将 swipl 文件夹包含到可执行文件中: bash pyinstaller -w --onefile --add-data="swipl;swipl" main.py

  6. 使用 --collect-all --collect-submodules

如果上述方法不起作用,可以尝试使用 --collect-all --collect-submodules 标志,这些标志会更积极地收集依赖项:

bash pyinstaller -w --onefile --collect-all=pyswip main.py

bash pyinstaller -w --onefile --collect-submodules=pyswip main.py

附加提示

  • 更新 PyInstaller: 确保使用的是最新版本的 PyInstaller,因为它可能包含对 Pyswip 的更好支持。
  • 虚拟环境: 在干净的虚拟环境中创建的项目,以避免与全局安装的软件包发生冲突。
  • 调试: 如果仍然遇到问题,请尝试不使用 -w 标志创建非隐藏窗口的可执行文件。这将允许在运行时查看可能出现的任何错误消息。

通过仔细遵循这些步骤,应该能够创建一个包含 Pyswip 并按预期运行的 PyInstaller 可执行文件。

标签:python,prolog,pyinstaller
From: 70477169

相关文章

  • Avro:在 Python 中使用多处理进行解码
    就最佳性能和更少延迟而言,哪种异步方法更适合解码从Kafka主题消耗的Avro消息?我正在使用Avro库的并发future,并且我仍然可以看到类似的执行时间与不使用并发future的情况相比。fromavro.ioimportBinaryDecoder,DatumReaderfromconfluent_kafka.avro.cached_sc......
  • 白盒测试基础与实践:Python示例及流程图设计
    文章目录前言一、白盒测试是什么?主要特点常用方法优点缺点二、白盒测试常用技术语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖路径覆盖三、程序流程图设计四、测试用例设计1.基本路径法2.语句覆盖3.判断覆盖4.条件覆盖5.判断/条件覆盖6.条件组合覆盖总结......
  • 【python的语法特点,如注释规则、代码缩进、编写规范等】
    介绍一下python的语法特点,如注释规则、代码缩进、编写规范等Python是一种广泛使用的高级编程语言,以其简洁易读的语法、丰富的标准库和强大的第三方库而闻名。下面我将详细介绍Python的一些基本语法特点,包括注释规则、代码缩进、以及编写规范等。一、注释规则Python......
  • 深圳大学-数据科学导论实验-python数据探索
    实验目的与要求掌握python编程基础。掌握数据探索基本操作。实验环境WindowsPyCharm实验数据salaries.csv"","rank","discipline","yrs.since.phd","yrs.service","sex","salary""1","Prof","B",......
  • 基于Python+Django协同过滤算法的招聘信息推荐系统设计与实现(源码+数据库+讲解)
    文章目录前言详细视频演示项目运行截图技术框架后端采用Django框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • python 栈帧沙箱逃逸
    基础理论什么是生成器生成器是python中的一种特殊的迭代器,在每次生成值以后会保留当前状态,以便下次调用可以继续生成值.python中生成器通过yield关键词进行定义,每次调用的时候返回一个值,并保持当前状态的同时暂停函数的执行.当下一次调用生成器的时候,函数会从上次暂停的位......
  • Transformer预测模型及其Python和MATLAB实现
    ###一、背景在自然语言处理(NLP)领域,传统的序列到序列(Seq2Seq)模型大多依赖于循环神经网络(RNN)和长短期记忆(LSTM)网络。这些模型虽然在许多任务中取得了成功,但由于其计算效率低下以及长距离依赖关系处理的不足,导致模型训练时间漫长,并在处理较长文本时效果不佳。2017年,Vaswani等人......
  • 随机森林(Random Forest)预测模型及其特征分析(Python和MATLAB实现)
    ##一、背景在大数据和机器学习的快速发展时代,数据的处理和分析变得尤为重要。随着多个领域积累了海量数据,传统的统计分析方法常常无法满足复杂问题的需求。在这种背景下,机器学习方法开始广泛应用。随机森林(RandomForest)作为一种强大的集成学习方法,因其高效性和较强的泛化能......
  • 【python脚本打包成exe】
    python项目打包成exe安装包分为三部分:1.python项目打包成可执行文件,依赖于一个python插件包pyinstaller        通过pipinstallpyinstaller安装即可。2.将python项目打包成可执行的exe文件及其依赖包        2.1在项目根目录下,输出python项目的配置文件(x......
  • 在Python中,如果想要获取昨天和前天的日期时间,使用datetime模块中的datetime.now()来获
    问:在Python中,如果想要获取昨天和前天的日期时间,使用datetime模块中的datetime.now()来获取当前时间,然后通过减去相应的时间差来得到昨天和前天的日期时间答:在Python中,如果你想要获取昨天和前天的日期时间,你可以使用datetime模块中的datetime.now()来获取当前时间,然后通过减去相......