程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在使用PyInstaller创建的单文件exe中导入外部模块大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在使用PyInstaller创建的单文件exe中导入外部模块?

开发过程中遇到在使用PyInstaller创建的单文件exe中导入外部模块的问题如何解决?下面主要结合日常开发的经验,给出你关于在使用PyInstaller创建的单文件exe中导入外部模块的解决方法建议,希望对你解决在使用PyInstaller创建的单文件exe中导入外部模块有所启发或帮助;

下列步骤允许@H_652_3@module_name导入由PyInstaller创建的可执行文件之外的python模块(在此命名),并允许该模块导入捆绑到可执行文件中的模块。

  • 添加excludes=['module_name']到PyInstaller规范中使用的Analysis对象。这样可以防止@H_652_3@module_name.py被捆绑到可执行文件中。
  • 添加sys.path.append(os.path.dirname(sys.executablE))在@H_652_3@module_name应用程序中导入的位置。这允许将其从可执行文件所在的目录中导入,该目录与应用程序要运行的目录不同(由于被解压缩到一个临时文件夹)。
  • 在导入外部模块 之前 ,请确保由捆绑模块之一执行由外部模块执行的所有导入。解释器 将无法 解析外部模块的进口对捆绑的模块,但 使用已在存在的人sys.modules

作为最后一个例子,请虑以下内容。

# bundled_module1.py
import external_module



# bundled_module2.py
# module content



# external_module.py
import bundled_module2

这将失败,external_module.py因为找不到导入的模块。但是,以下方法将起作用:

# bundled_module1.py
import bundled_module2
import external_module



# bundled_module2.py
# module content



# external_module.py
import bundled_module2

如果外部模块应该能够导入的捆绑模块数量有限,那就很好了。对于较大的集合,它可能会变得笨拙。

鉴于文档指出解释器 针对捆绑到可执行文件中的模块 解析导入,这感觉像是一个可能的错误。不过,并未明确调用与可执行文件外部的模块进行互操作。

解决方法

我正在使用PyInstaller创建一个单文件可执行文件。是否有可能为我的脚本执行导入使得i)导入的模块是从同一个目录中的exe(即它不是打包成EXE)和ii)在导入模块可以导入其它模块中引入
打包成可执行程序?

此处的背景是导入的模块包含用户应能够修改的配置。这可能包括创建自定义派生类以及使用打包模块中的枚举。

尽管搜索很困难,但我没有找到任何建议,因为有很多相似的主题使用基本相同的关键字。

大佬总结

以上是大佬教程为你收集整理的在使用PyInstaller创建的单文件exe中导入外部模块全部内容,希望文章能够帮你解决在使用PyInstaller创建的单文件exe中导入外部模块所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。