使用pyinstaller打包時發現用默認引數,打包成多個檔案時可以在其它電腦上使用,使用-F打包成單檔案在其它電腦上用的時候就各種提示缺dll檔案,這是為什么?打包程序沒有提示錯誤。
warn0005.txt檔案內容如下:
missing module named resource - imported by posix, D:\PyCharm\gitlab\practice\0005\0005.py
missing module named posix - imported by os, D:\PyCharm\gitlab\practice\0005\0005.py
missing module named _posixsubprocess - imported by subprocess, D:\PyCharm\gitlab\practice\0005\0005.py
missing module named org - imported by pickle, D:\PyCharm\gitlab\practice\0005\0005.py
missing module named readline - imported by cmd, code, pdb, D:\PyCharm\gitlab\practice\0005\0005.py
excluded module named _frozen_importlib - imported by importlib, importlib.abc, D:\PyCharm\gitlab\practice\0005\0005.py
missing module named _frozen_importlib_external - imported by importlib._bootstrap, importlib, importlib.abc, D:\PyCharm\gitlab\practice\0005\0005.py
missing module named _winreg - imported by platform, D:\PyCharm\gitlab\practice\0005\0005.py
missing module named _scproxy - imported by urllib.request
missing module named java - imported by platform, D:\PyCharm\gitlab\practice\0005\0005.py
missing module named 'java.lang' - imported by platform, D:\PyCharm\gitlab\practice\0005\0005.py, xml.sax._exceptions
missing module named vms_lib - imported by platform, D:\PyCharm\gitlab\practice\0005\0005.py
missing module named termios - imported by tty, D:\PyCharm\gitlab\practice\0005\0005.py, getpass
missing module named grp - imported by shutil, tarfile, D:\PyCharm\gitlab\practice\0005\0005.py
missing module named pwd - imported by posixpath, shutil, tarfile, http.server, webbrowser, D:\PyCharm\gitlab\practice\0005\0005.py, netrc, getpass
missing module named _dummy_threading - imported by dummy_threading, D:\PyCharm\gitlab\practice\0005\0005.py
missing module named 'org.python' - imported by copy, D:\PyCharm\gitlab\practice\0005\0005.py, xml.sax
經過測驗發現缺少的dll檔案如圖中所示:

開發環境是win10 64位,python3.6.4,測驗機器是win7 32位,沒安裝python,也沒安裝vc2005(后來裝了也不管用)
uj5u.com熱心網友回復:
希望哪位路過的前輩幫我看下uj5u.com熱心網友回復:
我遇到過 win7 環境下打包的EXE 不能在xp 下用。 不知道pyinstall 是不是要開發環境和運行環境一致才能保證exe能正常運行。uj5u.com熱心網友回復:
我把這圖里幾個dll檔案放到程式目錄就可以運行了,可是無論怎樣都打包不進去
uj5u.com熱心網友回復:
你是怎么安裝pyinstaller 的,如果是直接pip 安裝的話建議去github 上下載,然后把python 目錄下的bin 檔案夾加入系統環境變數,我之前也是缺少這些檔案,做了這個步驟后就解決了。uj5u.com熱心網友回復:
如果是環境變數的問題不應該怎么打包都用不了嗎?可是我用默認引數就可以,-F就不行
uj5u.com熱心網友回復:
這個我也遇到過uj5u.com熱心網友回復:
那后來解決了嗎?uj5u.com熱心網友回復:
必須要不同平臺打不同的 不兼容 踩過這個坑uj5u.com熱心網友回復:
可以把dll打進exe的,給你我的一個spec檔案你參考下改吧改吧試試。
# -*- mode: python -*-
block_cipher = pyi_crypto.PyiBlockCipher(key='keys')
a = Analysis(['CodeAnalyToolMainCol.py'],
pathex=['C:\\Python27\\Lib\\site-packages\\', 'F:\\InventoryTool'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
a.binaries = a.binaries + [('oraociei11.dll','E:\\instantclient_11_2\\oraociei11.dll','BINARY')]
a.binaries = a.binaries + [('oci.dll','E:\\instantclient_11_2\\oci.dll','BINARY')]
a.binaries = a.binaries + [('orasql11.dll','E:\\instantclient_11_2\\orasql11.dll','BINARY')]
a.binaries = a.binaries + [('ociw32.dll','E:\\instantclient_11_2\\ociw32.dll','BINARY')]
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
coll = COLLECT(EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[('i_code.png', 'F:\\InventoryTool\\Config\\i_code.png', 'DATA')],
name='Inventory',
debug=False,
strip=False,
upx=True,
console=False,version='Inventory_Version.txt',icon='F:\\InventoryTool\\i_code.ico' ),
[
('ExcelTemplate\\ExportTemplate.xlsx','F:\\InventoryTool\\ExcelTemplate\\ExportTemplate.xlsx','DATA'),
('ExcelTemplate\\CallRelationTree.xlsx','F:\\InventoryTool\\ExcelTemplate\\CallRelationTree.xlsx','DATA'),
],
strip=None,
upx=True,
name='InventoryTool')
這個就把Oracle的臨時客戶端的dll全打進exe了。
uj5u.com熱心網友回復:
博主這怎么辦啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/230025.html
上一篇:怎樣才能兩列同時關聯一張表?
