我创建了应用程序来打开浏览器,就像下面的代码,它从cmd行运行得很好。
但是,当我用pyinstaller打包它时,它不能工作..
有什么问题吗?在这种情况下,我将非常感谢你的帮助。
# main.py
# -*- coding: utf-8 -*-
import os
from selenium import webdriver
if __name__ == '__main__':
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
DRIVER_BIN = os.path.join(PROJECT_ROOT, "chromedriver")
browser = webdriver.Chrome(executable_path=DRIVER_BIN)
browser.get('https://google.com/')这是.spec文件。
# -*- mode: python -*-
import os
project_path = os.path.abspath(os.path.curdir)
block_cipher = None
a = Analysis(['main.py'],
pathex=[project_path],
binaries=[],
datas=[],
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,
a.binaries,
a.zipfiles,
a.datas,
[],
name='test',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=False)
app = BUNDLE(exe,
name='test.app',
icon=None,
bundle_identifier=None)文件树是这样的。
dist/
test.app
test
chromedriver <- add after packaged错误可能是这样的。
Jun 26 14:42:01 MacBookPro ctkahp[67399]: objc[67399]: Class TKTokenRefCtkd is implemented in both /System/Library/Frameworks/Security.framework/Versions/A/Sec urity (0x7fff8a3cf0a0) and /System/Library/Frameworks/CryptoTokenKit.framework/ctkahp.bundle/Contents/MacOS/ctkahp (0x10ecbc760). One of the two will be used. Which one is undefined.
Jun 26 14:42:16 MacBookPro com.apple.xpc.launchd[1] (highlow.23356[67408]): Service exited with abnormal code: 255发布于 2019-06-26 15:47:25
我找到了解决方案。
我尝试将完整路径设置为executable_path。然后它就可以正常工作了。
但我不明白为什么这是个问题。
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
DRIVER_BIN = os.path.join(PROJECT_ROOT, "chromedriver")
browser = webdriver.Chrome(executable_path=DRIVER_BIN)还有这个。
browser = webdriver.Chrome(executable_path="./chromedriver").app文件位于何处?
发布于 2020-04-12 02:40:00
命令执行的测试脚本路径与"bundle“不同。
你可以试试这个
main.py
import os
import sys
if __name__ == "__main__":
if getattr(sys, 'frozen', False):
chromedriver_path = os.path.join(sys._MEIPASS, "chromedriver")
driver = webdriver.Chrome(chromedriver_path)
else:
driver = webdriver.Chrome()main.spec
project_path = os.path.abspath(os.path.curdir)
a = Analysis(['main.py'],
pathex=[project_path],
binaries=[('/Users/xxx/xxx/chromedriver', './')],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)https://stackoverflow.com/questions/56766415
复制相似问题