首页 > 其他分享 >pyinstaller 打包后无法找到导入代码中依赖的文件项

pyinstaller 打包后无法找到导入代码中依赖的文件项

时间:2022-09-01 11:14:09浏览次数:60  
标签:文件 pyinstaller 路径 json 导入 path skill 打包

问题出现的情况:

写了一个flask的服务,里面使用了4个接口{

1.localhost:/aaa

2.localhost:/bbb

3.localhost:/ccc

4.localhost:/ddd

}

其中一个接口(ddd)调用了一个封装函数(get_sign())

在get_sign函数中又引入了一个skill.json

with open('skill.json', 'r',encoding='utf-8', errors='ignore') as sfile:
    services = json.load(sfile)

测试的时候一点问题没有,打包完成以后调用接口提示没有skill.json的这个文件。

No such file or directory.....xxxxx

以下是尝试过的方法:

找不到这个依赖,是不是路径不对

1.绝对路径和相对路径都试过了,没打包前一点问题没有,打包后就出问题。

路径不对是不是因为没将json放在静态资源目录下?

2.遂将文件放在静态资源下,问题同上。

有没有可能打包的时候,没将指定文件打包进去?

3.在python的lib路径下找到pyinstaller目录的hooks路径下,新增一个hook-xxx.py文件

打包的时候发现还是不行,定睛一看原来导入的是类,模块,至于那个file方法,不知道是我用的有问题还是怎么事,反正就是打包的时候依然没打进去

4.继续回到路径的问题下,既然无法将skill.json文件打包,那么继续转到处理路径问题吧。

执行的时候可以输出一下当前文件路径,发现是在win的一个临时路径下,那么当然当前的路径里是不存在skill.json文件的

当我需要引用skill.json文件的情况下,也就是使用get_sign函数(上下文在get_sign时),将工作路径转到有skill.json的路径下是不是就可以引用到文件了。

# 修改工作路径
file_path = os.path.join(os.path.dirname(os.path.realpath(sys.executable)), 'skill.json') with open(file_path, 'r',encoding='utf-8', errors='ignore') as sfile:   services = json.load(sfile)

 

#查看当前路径
dirname_ = os.path.dirname(os.path.abspath(__file__))
print(dirname_ )

 

标签:文件,pyinstaller,路径,json,导入,path,skill,打包
From: https://www.cnblogs.com/meipu/p/16645800.html

相关文章

  • Java实现greenplum数据库中csv文件的导入和导出
    Java实现greenplum数据库中csv文件的导入和导出背景:greenplum数据库是在开源的PostgreSQL的基础上采用MPP架构实现的关系型分布式数据库,在使用greenplum数据库进行开发的......
  • 极狐gitlab数据手动导出导入测试
    极狐gitlab数据手动导出导入测试本文主要测试从源极狐gitlab实例手动迁移数据到目标极狐gitlab实例的可行性。1.源极狐gitlab实例版本:极狐gitlabv14.10.01.1用户信......
  • 用VUE开发页面的步骤 其实vue开发就是自定义组件,在App.vue中展示自定义的组件,打包时运
    用VUE开发页面的步骤这几天项目不是很忙,就研究了一下比较热门的vue,发现用vue开发页面其实和开发后台是一样也需要搭建开发环境,挑选ide,现总结一下开发步骤:1。搭建开发环......
  • 小狼毫输入法导入搜狗词库方法以及其他配置文件
    default.custom.yaml文件的修改"C:\Users\xxx\AppData\Roaming\Rime\default.custom.yaml"文件名:default.custom.yamlcustomization:distribution_code_name:Weas......
  • gradle多模块项目打包依赖拆分
    一、目录结构.├──boogle-common│  ├──build.gradle.kts│  └──src├──boogle-core│  ├──build.gradle.kts│  └──src├──......
  • Vue3打包部署Nginx
     1、在vue.config.js中配置如下1const{defineConfig}=require('@vue/cli-service')2module.exports=defineConfig({3transpileDependencies:tr......
  • webpack打包分析webpack-bundle-analyzer 打包文件分析工具
    最近需要减少项目打包后的文件(bundle)的大小,那么首先需要了解bundle的构成。目前我已知的方法有两种:利用webpack-bundle-analyzer插件利用webpack官方提供的分析功能......
  • PostgreSQL用psql导入sql文件
    一、sql文件-------------------------------------------------------------------------------basics.sql---Tutorialonthebasics(tablecreationanddata......
  • Java包与Import导入
    包的概念包是Java语言提供的一种确保类名唯一性的机制,是类的一种组织和管理方式、是一组功能相似或相关的类或接口的集合。一个完整的类名是包名+类名,在没有import导入的......
  • mysqldump导入慢的解决方法
    mysqldump导入慢的解决方法MySQL导出的SQL语句在导入时有可能会非常非常慢,经历过导入仅45万条记录,竟用了近3个小时。在导出时合理使用几个参数,可以大大加快导入的速度。......