PRNet:Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network (ECCV 2018)
https://github.com/YadiraF/PRNet

一开始使用pyinstaller打包的,但是打包后的exe,运行起来也不报错,也没成功

运行环境
win10
python3.5
tensorflow1.12

(abcdefghijklmn) F:\B_software_3DFaceRec\PRNet>conda list
# packages in environment at D:\Program\Work\Anaconda3\envs\abcdefghijklmn:
#
# Name                    Version                   Build  Channel
absl-py                   0.8.0                    pypi_0    pypi
astor                     0.8.0                    pypi_0    pypi
blas                      1.0                         mkl
bleach                    1.5.0                    pypi_0    pypi
ca-certificates           2019.5.15                     1
certifi                   2018.8.24                py35_1
cffi                      1.11.5           py35h945400d_0
cuda90                    1.0                           0    pytorch
cx-freeze                 6.0                      pypi_0    pypi
cycler                    0.10.0           py35hcc71164_0
cython                    0.29.13                  pypi_0    pypi
decorator                 4.4.0                    pypi_0    pypi
dlib                      19.17.0                  pypi_0    pypi
entrypoints               0.3                      pypi_0    pypi
enum34                    1.1.6                    pypi_0    pypi
flake8                    3.7.8                    pypi_0    pypi
freetype                  2.8                  h51f8f2c_1
gast                      0.2.2                    pypi_0    pypi
grpcio                    1.23.0                   pypi_0    pypi
h5py                      2.9.0                    pypi_0    pypi
html5lib                  0.9999999                pypi_0    pypi
icc_rt                    2017.0.4             h97af966_0
icu                       58.2                 ha66f8fd_1
imageio                   2.5.0                    pypi_0    pypi
intel-openmp              2018.0.3                      0
jpeg                      9b                   hb83a4c4_2
keras-applications        1.0.8                    pypi_0    pypi
keras-preprocessing       1.1.0                    pypi_0    pypi
kiwisolver                1.0.1            py35hc605aed_0
libopencv                 3.4.2                h20b85fd_0
libpng                    1.6.36               h2a8f88b_0
libprotobuf               3.6.0                h1a1b453_0
libtiff                   4.0.10               hb898794_2
markdown                  3.1.1                    pypi_0    pypi
matplotlib                2.2.2            py35h153e9ff_1
mccabe                    0.6.1                    pypi_0    pypi
mkl                       2018.0.3                      1
mkl_fft                   1.0.6            py35hdbbee80_0
mkl_random                1.0.1            py35h9258bd6_0
networkx                  2.3                      pypi_0    pypi
numpy                     1.15.2           py35ha559c80_0
numpy-base                1.15.2           py35h8128ebf_0
opencv-contrib-python     4.1.0.25                 pypi_0    pypi
openssl                   1.1.1c               he774522_1
pillow                    5.2.0                    pypi_0    pypi
pip                       10.0.1                   py35_0
protobuf                  3.9.1                    pypi_0    pypi
py-opencv                 3.4.2            py35hc319ecb_0
pycodestyle               2.5.0                    pypi_0    pypi
pycparser                 2.18             py35h15a15da_1
pyflakes                  2.1.1                    pypi_0    pypi
pyparsing                 2.2.0            py35hcabcaab_1
pyqt                      5.9.2            py35h1aa27d4_0
python                    3.5.5                h0c2934d_2
python-dateutil           2.7.3                    py35_0
pytorch                   0.4.0           py35_cuda90_cudnn7he774522_1  [cuda90]  pytorch
pytz                      2018.5                   py35_0
pywavelets                1.0.3                    pypi_0    pypi
qt                        5.9.7            vc14h73c81de_0
scikit-image              0.15.0                   pypi_0    pypi
scipy                     1.1.0            py35h4f6bf74_1
setuptools                39.2.0                   py35_0
sip                       4.19.8           py35h6538335_0
six                       1.11.0           py35hc1da2df_1
sqlite                    3.26.0               he774522_0
tensorboard               1.12.2                   pypi_0    pypi
tensorflow                1.12.0                   pypi_0    pypi
tensorflow-tensorboard    0.4.0                    pypi_0    pypi
termcolor                 1.1.0                    pypi_0    pypi
torchvision               0.1.8                    pypi_0    pypi
tornado                   5.0.2                    py35_0
vc                        14.1                 h0510ff6_3
vs2015_runtime            15.5.2                        3
werkzeug                  0.15.5                   pypi_0    pypi
wheel                     0.31.1                   py35_0
wincertstore              0.2              py35hfebbdb8_0
xz                        5.2.4                h2fa13f4_4
zlib                      1.2.11               h8395fce_2
zstd                      1.3.7                h508b16e_0

cx_Freeze打包程序有两种,第一种是直接cxfreeze xxx.py,第二种是构建setup.py
这里用的第二种,构建的setup.py来自于https://blog.csdn.net/m0_38052778/article/details/84581429

from cx_Freeze import setup, Executable
# come from https://blog.csdn.net/m0_38052778/article/details/84581429
# Dependencies are automatically detected, but it might need
# fine tuning.
import sys
import os.pathos.environ['TCL_LIBRARY'] = r'D:/Program/Work/Anaconda3/tcl/tcl8.6'
os.environ['TK_LIBRARY'] = r'D:/Program/Work/Anaconda3/tcl/tk8.6'
base = []build_exe_options = dict(packages=['numpy', 'scipy', 'tensorflow', 'google'],includes=['tensorflow'],include_files=[r"D:/Program/Work/Anaconda3/DLLs/tcl86t.dll",r"D:/Program/Work/Anaconda3/DLLs/tk86t.dll"])executables = [Executable('F:/B_software_3DFaceRec/PRNet/demo.py', base=base, targetName='demo.exe')
]setup(name='demo',version='1.0',description='prnet',options=dict(build_exe=build_exe_options),executables=executables)

NOTE:这里的绝对路径请改成自己的

然后就执行命令,build是打包后的文件放置的地方

python setup.py build

但是遇到了好些问题,记录如下:

1、ModuleNotFoundError: No module named ‘scipy.spatial.ckdtree’
参考链接:https://stackoverflow.com/a/44061093
就把build/exe.win-amd64-3.5/lib/scipy/spatial/文件夹下面的cKDTree.cp35-win_amd64.pyd改成ckdtree.cp35-win_amd64.pyd

2、ModuleNotFoundError: No module named ‘google’
参考链接:1、https://blog.csdn.net/ibelieveican2015/article/details/79240729
2、https://blog.csdn.net/imliutao2/article/details/80413081
首先安装一个protobuf(来自参考链接1),如果有就不用装了

pip install protobuf

装完后在python下可以import到google,但是cx_Freeze打包出来的exe还是说没有google.protobuf,然后就需要在lib/site-packages/google文件夹下创建一个空的__init__.py(来自参考链接2)

3、RuntimeError: No suitable plugin registered for imread
参考链接:https://blog.csdn.net/ygfrancois/article/details/84556955
好像skimage.io和这些打包的方法总是存在些问题,google的时候发现pyinstaller也有这种问题
然后我就使用opencv来读取图像了,但是由于opencv的读出来的图像是BGR的,而skimage读出来的图像是RGB的,而且,我最后保留的obj文件的纹理也是RGB的,因此就修改一下opencv读出来的图像

image[:,:,[0,1,2]] = image[:,:,[2,1,0]]

mmp,把这个打包后分享给别人,然后在别人电脑里运行的时候,提示要绝对路径下的源码

然后我又试着用pyinstaller跑了一遍,结果,居然可以了,应该是上面改的某个东西生效了。
但是还有一些小问题,是在之前使用pyinstaller的时候遇到的。
运行命令:

pyinstaller -F demo.py

-F是生成单个exe,-D是生成文件夹
然后会遇到下面这个错误

RecursionError: maximum recursion depth exceeded

这是因为它在递归包的时候,超过了最大深度,然后就需要在它现在生成的demo.spec里添加

import sys
sys.setrecursionlimit(5000)

然后我之前遇到了一个问题,让在hiddenimports里添加pywt._extensions._cwt,如下所示

hiddenimports=["pywt","pywt._extensions._cwt"],

所以最后得到的demo.spec如下

# -*- mode: python ; coding: utf-8 -*-
import sys
sys.setrecursionlimit(5000)block_cipher = Nonea = Analysis(['demo.py'],pathex=['F:\\B_software_3DFaceRec\\PRNet'],binaries=[],datas=[],hiddenimports=["pywt","pywt._extensions._cwt"],hookspath=[],runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,cipher=block_cipher)
exe = EXE(pyz,a.scripts,a.binaries,a.zipfiles,a.datas,[],name='demo',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,runtime_tmpdir=None,console=True )

然后运行这个demo.spec

pyinstaller -F demo.spec

会遇到下面这个问题

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 123: invalid continuation byte

然后参考https://blog.csdn.net/qq_34106574/article/details/82964782
先在控制台输入chcp 65001,再运行pyinstaller -F demo.spec

cx_Freeze 打包 PRNet 为exe相关推荐

  1. 使用cx_freeze打包Python程序

    使用cx_freeze打包Python程序 [Python俱乐部] 使用cx_freeze打包Python程序 平时打包Python查询都用的是py2exe,发现还有个打包程序cx_Freeze,好像 ...

  2. 成功解决cx_Freeze打包的时候出现importError:can not import name idnadata

    成功解决cx_Freeze打包的时候出现importError:can not import name idnadata 目录 解决问题 解决方法 解决问题 解决方法 解决问题 cx_Freeze打包 ...

  3. python打包成二进制文件_pyinstall python文件打包成二进制exe文件

    pycharm + python3 + win7 1 pip install pyinstall  (官网) 2 准备 .py 文件 3 具体例子 from PyQt5.QtWidgets impor ...

  4. ios python3闪退_解决Python3 cx_Freeze打包闪退/无法执行以及No module named 'matplotlib.backends.backend_tkagg'...

    [虽然iOS 5.0版本之后加入了ARC机制,由于相互引用关系比较复杂时,内存泄露还是可能存在.所以了解原理很重要.这里讲述在没有ARC的情况下,如何使用Instruments来查找程 cx_Free ...

  5. Flask项目能打包为单个exe文件运行?掌握原理后居然如此简单!

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨王翔丨 来源丨清风Python(ID:Bree ...

  6. CxFreeze打包python的exe

    CxFreeze打包python的exe 使用cxfreeze打包setup.py配置如下 from cx_Freeze import setup, Executable import sys bas ...

  7. pyinstaller打包生成的exe文件(并设置运行时静默)

    pyinstaller打包生成的exe文件(并设置运行时静默) 目录 pyinstaller打包生成的exe文件(并设置运行时静默)

  8. pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行

    pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行 目录 pyinstaller打包生成的exe文件并使用python终止后台的exe程序运行 #pyinstalle ...

  9. Python执行pyinstaller打包生成的exe文件实战

    Python执行pyinstaller打包生成的exe文件实战 目录 Python执行pyinstaller打包生成的exe文件实战 #pyinstaller打包生成的exe文件

最新文章

  1. jquery+html 压缩图片
  2. JavaScript之childNodes属性、nodeType属性学习
  3. Java程序员的工资为什么一直那么高?
  4. c 语言读取注册表信息,C++读取注册表的实现方法
  5. 通用usb集线器驱动_多口充电、高速传输——ORICO晶锐系列7口集线器测评
  6. webgl获取鼠标形状_三模无线搭配对称手型设计,游戏致胜利器,ROG烈刃2无线鼠标...
  7. mie散射粒子消光系数 matlab代码,一种球形粒子GMie散射效率极值的算法
  8. MySQL编程技巧_MySQL学习笔记---MySQL开发技巧
  9. android的控件常用方法是,Android常用控件属性分析
  10. 大话设计模式之原型模式
  11. 1月4日 每次安装都有新问题
  12. 笔杆子被领导倚重的核心竞争力是什么?
  13. 程序员带半箱辣条参加东京奥运,网友:猝不及防一波狗粮!
  14. xenu工具如何扫描网站
  15. Java static关键字与静态块
  16. ST、SC、FC、LC光纤接头区别?
  17. python零基础电子书免费下载-零基础入门学习Python PDF 扫描版
  18. Elasticsearch——Bboss
  19. 圣诞节送朋友哪款蓝牙耳机好?高颜值蓝牙耳机推荐
  20. c语言报错(二)expected initializer before “int“

热门文章

  1. Shell脚本学习之二:变量与运算符
  2. 2021计算机等级考试VB,2021年全国计算机等级考试VB知识点总结-20210417084046.doc-原创力文档...
  3. 敏捷项目管理流程-Scrum框架最全总结!
  4. 猿创征文 | linux的gdb 和g++
  5. Java实现判断闰年
  6. 语音翻译怎么弄?将这三个方法分享给你
  7. Notification —— 通知
  8. LeetCode_1046_最后一块石头的重量
  9. “PS”制作海报(二)
  10. python中griddata的外插值_SciPyTutorial-多元插值griddata