当前位置: 首页 > wzjs >正文

美国新冠肺炎疫情最新情况快速提升排名seo

美国新冠肺炎疫情最新情况,快速提升排名seo,做货运网站找哪家好,wordpress动态图前言 前段时间做一个内网开发的需求,要求将selenium程序打包成.exe放在内网的win7上运行,在掘金搜了一圈也没有发现相关文章,因此将过程中踩到的坑记录分享一下。 本文涵盖了具体打包操作、不同模块和依赖项的兼容性解决方案,以…

前言

前段时间做一个内网开发的需求,要求将selenium程序打包成.exe放在内网的win7上运行,在掘金搜了一圈也没有发现相关文章,因此将过程中踩到的坑记录分享一下。

本文涵盖了具体打包操作、不同模块和依赖项的兼容性解决方案,以确保在打包和运行时都能正常工作。


1. 背景

在 Python 项目中,使用第三方库(如 seleniumselenium-wiremitmproxy 等)时,会遇到许多依赖项,并且由于库之间的版本兼容性问题,可能导致运行时错误。常用的打包工具 PyInstaller 能将 Python 项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运行错误。因此,本指南总结了打包过程中常见问题和解决方案,以帮助开发者顺利完成项目的打包和发布。

2. 可能遇到的问题概述

PyInstaller打包selenium-wire时可能会遇到一些问题,如下:

  1. 依赖冲突:如 pyOpenSSLcryptography 的版本冲突问题。
  2. 路径问题:如 chromedriver.exe 在运行时未找到或未正确加载。
  3. 打包文件缺失:某些文件(如 .crt.keychromedriver.exe 等)在打包时未包含,导致运行时无法找到。

3. PyInstaller 打包步骤及参数配置

使用 PyInstaller 打包一个 Python 项目时,可以通过以下步骤和命令来生成可执行文件:

pyinstaller --onefile --clean --hidden-import=<module> --name=<executable_name> <script.py>

参数详解:

  • --onefile:将所有文件打包成一个独立可执行文件。
  • --clean:清理之前打包时的缓存,确保使用最新的依赖版本。
  • --hidden-import:指定打包时包含的隐藏模块(PyInstaller 有时无法自动检测到的依赖)。
  • --name:指定打包生成的可执行文件名称。

对于使用 .spec 文件的项目,可以通过如下命令打包:

pyinstaller --clean <spec_file_name>.spec

4. 依赖项版本不兼容问题

4.1 pyOpenSSLcryptography 的兼容性问题

PyInstaller 打包的项目中,pyOpenSSLcryptography 是常见依赖。由于版本更新问题,某些版本的 pyOpenSSL 可能无法与较新版本的 cryptography 兼容,导致运行时 X509_V_FLAG_NOTIFY_POLICY 等属性缺失。

常见错误

AttributeError: module 'lib' has no attribute 'X509_V_FLAG_NOTIFY_POLICY'

解决方法

  1. 降级 cryptography 版本:建议降级到 3.3.2 版本,确保兼容性。
pip install cryptography==3.3.2
  1. 降级 pyOpenSSL 版本:使用 20.0.1 版本,这与 cryptography 3.3.2 更加兼容。
pip install pyOpenSSL==20.0.1
  1. 升级所有相关依赖:如果使用较旧的版本无效,尝试升级 selenium-wiremitmproxypyOpenSSL、和 cryptography,确保依赖版本相互兼容。
pip install --upgrade selenium-wire mitmproxy pyOpenSSL cryptography

4.2 chromedriver.exe 打包问题

selenium 使用的 chromedriver.exe 必须在系统的 PATH 中或由代码显式指定路径。然而,打包成单文件后,chromedriver.exe 可能无法正常找到,需要手动配置。

5. 路径问题及解决方法

5.1 包含 chromedriver.exe 文件

chromedriver.exe 文件放在项目目录下,并在 .spec 文件的 datas 配置中包含此文件,以确保在打包后可以正确引用。

配置示例

  1. .spec 文件中将 chromedriver.exe 添加到 datas
datas=[('<absolute_path>/chromedriver.exe', '.')  # 打包到可执行文件的根目录
]
  1. 在代码中设置相对路径以引用 chromedriver.exe 文件,确保在打包后的运行环境中可以正确定位到该文件。
from selenium.webdriver.chrome.service import Service
import os
import sysdef resource_path(relative_path):if hasattr(sys, '_MEIPASS'):return os.path.join(sys._MEIPASS, relative_path)return os.path.join(os.path.abspath("."), relative_path)chrome_driver_path = resource_path("chromedriver.exe")
service = Service(executable_path=chrome_driver_path)

6. 详细解决方案

在打包过程中,还可能遇到其他常见问题,例如文件缓存和打包依赖文件丢失问题。

6.1 清理缓存文件

在打包前,通过 --clean 参数或手动删除 builddist 文件夹,确保 PyInstaller 不使用缓存文件:

pyinstaller --clean <spec_file_name>.spec

或者手动删除 builddist 文件夹:

rmdir /s /q build
rmdir /s /q dist

6.2 使用 .spec 文件配置 hiddenimports

如果 PyInstaller 在打包时无法自动识别所有依赖,可以通过 .spec 文件中的 hiddenimports 参数显式指定依赖项:

hiddenimports=['mitmproxy', 'seleniumwire', 'OpenSSL', 'cryptography'],

6.3 将证书文件包含在打包中

某些依赖(如 selenium-wire)使用的 .crt.key 文件也需手动包含:

datas=[('<absolute_path>/seleniumwire/ca.crt', 'seleniumwire'),('<absolute_path>/seleniumwire/ca.key', 'seleniumwire')
],

7. 调试建议

  1. 确保依赖版本一致:在开发和打包环境中使用相同的依赖版本,防止版本不一致带来的兼容性问题。
  2. 使用虚拟环境:每个项目单独配置虚拟环境,避免全局环境中的其他依赖引发冲突。
  3. 分步调试:打包前在开发环境中逐步测试依赖是否正常运行。遇到依赖问题,优先使用兼容的版本组合。

调试依赖冲突

使用 pip check 命令检查依赖冲突,并通过 pip freeze 获取依赖列表,以便管理版本:

pip check  # 检查依赖冲突
pip freeze > requirements.txt  # 保存当前依赖

总结

本指南总结了在使用 PyInstaller 打包 Python 项目时常见的兼容性问题和解决方法。通过以下步骤,可以显著提升打包的成功率:

  1. 使用兼容的依赖版本,尤其是 pyOpenSSLcryptography
  2. chromedriver.exe 等可执行文件显式添加到 .spec 文件。
  3. 在代码中使用 sys._MEIPASS 以正确引用打包后临时解压目录中的文件。

严格遵循这些步骤可以有效避免大多数打包和运行时错误,确保项目在各个环境下稳定运行。

http://www.dtcms.com/wzjs/63200.html

相关文章:

  • 试用网站 建站包头整站优化
  • 住房和城乡建设部网站八大员企业营销策划及推广
  • 珠海网站建设哪家公司好2022年十大网络流行语发布
  • 手机网站关闭窗口代码软件定制开发公司
  • 用dw制作视频网站武汉百度seo网站优化
  • 郑州外贸网站建设商家网页优化怎么做
  • 深圳知名网站建设价格网站制作建设公司
  • 帮人做网站要怎么赚钱吗广东疫情最新消息今天又封了
  • 日本人真人做真爱免费的网站百度网站的网址是什么
  • 做网站申请域名空间百度账号登陆
  • 博客可以放自己做的网站营销伎巧第一季
  • 用网站模板给人做网站挣钱吗百度推送
  • 做网站需要准备的东西培训课程开发
  • 软文自助发稿软件开发 网站建设网络营销推广工具
  • 常营网站建设公司2024北京又开始核酸了吗今天
  • 百度免费建立网站营销软文是什么
  • 济南网站建设公司熊掌号关键词优化公司靠谱推荐
  • 慢慢来做网站多少钱网站广告制作
  • 青岛网站建设价格seo推广怎么入门
  • 建公司网站要多久口碑营销的案例
  • 沈阳唐朝网站建设网络营销策划方案书范文
  • 免费html网页模板网站企业网站推广的一般策略
  • 江西网站建设与推广怎么建立自己的企业网站
  • wordpress 页面美化seo网站课程
  • 厦门北京网站建设指数基金怎么买
  • 如何建设影视网站首页海外推广营销 平台
  • 易语言做网站后端seo公司后付费
  • 怎么做游戏网站编辑万秀服务不错的seo推广
  • 5v贵阳做网站的价格1500元个性定制首选方舟网络百度seo关键词排名推荐
  • 哪些做批发的网站比较正规武汉seo招聘网