【发布时间】:2020-06-13 14:10:09
【问题描述】:
我正在尝试从我在 PyCharm 中编写的 python 脚本创建一个 EXE 文件。我正在使用最新版本的 Python 并在 virtualenv 上使用 PyInstaller。
每当我尝试实际使用命令 pyinstaller --onedir map.spec 时就会出现问题,其中 map.spec 是我的脚本的规范文件,包含在此处:
block_cipher = None
a = Analysis(['map.py'],
pathex=['C:\\Users\\BGBSC\\Desktop\\untitled'],
binaries=[],
datas=[('nactiMapu.txt', '.'), ('nactiPohyb.txt', '.'), ('nactiZnacky.txt', '.'), ('a.txt', '.'), ('b.txt', '.'), ('c.txt', '.')],
hiddenimports=[],
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,
[],
exclude_binaries=True,
name='map',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='map')
每当我尝试运行 pyinstaller 时,都会出现几个此类警告:
5447 WARNING: lib not found: python38.dll dependency of C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.752.0_x64__qbz5n2kfra8p0\DLLs\_tkinter.pyd
每个都引用 python38.dll,唯一的区别是它们“依赖”于不同的模块。它还写了这一行,这可能也是引起关注的原因:
5623 INFO: Python library not in binary dependencies. Doing additional searching...
5631 INFO: Using Python library
我的脚本使用这些导入:
import sys
import os
import turtle
import time
这是一个绘制东西的海龟脚本。我还操作了我作为数据包含的不同 txt 文件,以便它们与最终的 exe 一起导出(至少我是这么理解的)。
我可能遗漏了一些非常基本的东西,或者 pyinstaller 不支持最新的 Python,或者它只是无法找到我的 python38.dll(我添加了环境的路径)。
【问题讨论】:
-
我还没有看到这个问题但是你有没有从 windows 商店安装 python?我认为这可能是一个问题。我建议从官方 python 网站下载 python 3.8 并尝试使用该 python 的 pyinstaller。
-
这只是一个警告——生成的代码会运行吗?
-
我从官网下载了python,但我今天也从windows store下载了一个。我将卸载所有这些并仅重新安装官方版本并回复您。感谢您的建议!
-
生成的代码显示一个控制台大约 0.1 秒,然后立即自行关闭。当我尝试使用 cmd 运行它时,它会输出此错误:加载 Python DLL 'C:\Users\BGBSC\Desktop\untitled\dist\map\' 时出错。并且:LoadLibrary:找不到指定的模块。
-
@Har 是的!这解决了一切。非常感谢!
标签: python pycharm exe pyinstaller