一、 打包
1. 生成index.spec
pyinstaller -F -w -i logo.ico index.py
# 不显示cmd
pyinstaller -F -c -i logo.ico index.py
# 建议先用-c,这样如果打包不成功的话可以看到哪里有错
-F 指只生成一个exe文件,不生成其他dll文件
-w 不弹出命令行窗口
-i 设定程序图标 ,其后面的ico文件就是程序图标
index.py 就是要打包的程序
-c 生成的exe文件打开方式为控制台打开。
2. 编译exe文件
pyinstaller -F --onefile index.spec
二、问题
1. file already exists but should not:\torch\_C.cp37-win_amd64.pyd
首先找到.spec配置文件修改配置文件,在配置文件中加入以下代码:
for d in a.datas:
if '_C.cp37-win_amd64.pyd' in d[0]:
a.datas.remove(d)
break
详细的.spec配置文件的内容如下:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['index.py'],
pathex=['C:\\Users\\hp\\PycharmProjects\\NSBRMTS'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
for d in a.datas:
if '_C.cp37-win_amd64.pyd' in d[0]:
a.datas.remove(d)
break
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='index',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True , icon='logo.ico')
再对index.spec进行编译
2. No such file or directory: 'C:\\Users\\hp\\AppData\\Local\\Temp\\_MEI150042\\pyecharts\\datasets\\map_filename.json'
重新安装pyecharts1.5.1版本
pip install pyecharts==1.5.1
在PyInstaller安装目录下
C:\Users\hp\Anaconda3\Lib\site-packages\PyInstaller\hooks 需要增加如下文件
hook-pyecharts.py 文件内容:
#-----------------------------------------------------------------------------
# Copyright (c) 2017-2020, PyInstaller Development Team.
#
# Distributed under the terms of the GNU General Public License (version 2
# or later) with exception for distributing the bootloader.
#
# The full license is in the file COPYING.txt, distributed with this software.
#
# SPDX-License-Identifier: (GPL-2.0-or-later WITH Bootloader-exception)
#-----------------------------------------------------------------------------
# Hook for nanite: https://pypi.python.org/pypi/nanite
from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files('pyecharts')
然后删除工程下面xxxxx.spec 文件,重新打包,即可。
3.importlib_metadata.PackageNotFoundError: No package metadata was found for prettytable
安装importlib_metadata包
未解决
参考链接:
https://www.cnblogs.com/huangjiyong/p/12436236.html
https://www.cnblogs.com/bob-jianfeng/p/12112772.html
https://blog.csdn.net/skj1995/article/details/81187954
https://www.cnblogs.com/LoveOpenSourceBoy/p/14192260.html
https://www.cnblogs.com/LoveOpenSourceBoy/p/14192260.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)