亲身测试Python 3.9.7,遇到过TensorFlow 2.6与NumPy 1.24版本不兼容致使模型训练时出现ImportError: cannot import name ‘deprecated’ 的情况,新手依照步……
亲身测试Python 3.9.7,遇到过TensorFlow 2.6与NumPy 1.24版本不兼容致使模型训练时出现ImportError: cannot import name ‘deprecated’ 的情况,新手依照步骤逐一操作,便能轻易避开这种常见问题。
Python第三方库兼容版本怎么查
起始步骤为,开启终端,也就是在Windows系统下通过按Win与R这两个键,接着输入cmd,随后按下回车键,之后键入python –version以及pip –version,将所呈现的输出记录下来,就像当下我这里所显示的是Python 3.9.7,pip 21.0.1。
【新手需躲开的坑】,通常会出现名为DLL load failed while importing numpy的报错,其最为关键的原因在于,Python的位数,也就是32位或者64位,跟库之间并不匹配,能够迅速解决的办法是,卸载掉32位的Python,接着去下载64位的然后重新安装。(这里根据你提的1.和2要求理解的“拆分“,但你提供的是一段文字内容,不太明确是否符合你的要求,若有问题请随时指出)。每次进行安装动作时,要添加那个关键参数pip install –no-cache-dir 库名,其中,–no-cache-dir属于最优推荐的值,其理由具体在于,它能够强制做到不从本地缓存去拉取旧版文件,进而以此避免因残留的whl包致使版本出现错乱情况。
虚拟环境隔离依赖冲突实操
第二步:于项目文件夹处,按住Shift键,再按下右键,从中选择“在此处打开PowerShell窗口”这种操作方式,接着输入python -m venv myenv以此来创建虚拟环境。其激活命令为:myenvScriptsactivate(此为Windows系统下的情况)。当看到命令行前面出现(myenv)这样的标识时,那就表明成功了。接着进行输入,输入pip install,添加–no-cache-dir参数,指定numpy版本为1.21.0进行安装,指定tensorflow版本为2.6.0进行安装。
新手上路要避开的坑,激活的时候出现报错,内容是无法加载叫做ps1的脚本,原因在于在此系统之上禁止运行脚本,这是因为PowerShell执行策略默认是Restricted,要以管理员身份去打开PowerShell,接着输入Set – ExecutionPolicy RemoteSigned,按下回车键往后输入Y进行确认。要是仍旧不可以,那就直接拿cmd去替代PowerShell,在cmd当中,激活路径是myenvScriptsactivate.bat。
两种锁定方案对比与选择
第三步实施锁定操作,此操作致力于使依赖版本处于固定状态,以此来避免在后续进行重新安装时出现问题。方案A的具体做法是,运行pip freeze > requirements.txt进行文件生成操作,那么在下次进行相关操作时,使用pip install -r requirements.txt来实现还原操作。方案B:进行poetry的安装,接着执行poetry init,之后执行poetry add numpy@1.21.0 tensorflow@2.6.0,随后poetry会自动生成poetry.lock用以锁定整棵依赖树。
方案的取舍有着这样的逻辑:要是个人去写脚本或者使用小工具,那就采用方案A,因为它具备零学习成本的特性,而且速度很快;要是涉及团队协作或者生产项目,那就必定得用方案B,它能够对传递性冲突进行递归解析,比方说A依赖B 1.0 ,C依赖B 2.0 ,在这种情况下,方案B会直接给出报错通知,要求你手动进行解决,然而方案A却会在悄无声息的状态下,使用后面安装的版本去覆盖,进而埋下隐蔽的bug。
高频报错libssl缺失完整解决流程
第四步:实际测试安装cryptography库之后出现ImportError这一错误提示,具体内容为libssl.so.1.1: cannot open shared object file。有一种一站式解决的办法:首先执行sudo apt update ,然后执行sudo apt install libssl1.1(此操作适用于Ubuntu/Debian这种操作系统环境)。如果系统只有libssl3,手动下载libssl1.1的deb包:wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb,然后sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb。紧接着,使用pip uninstall cryptography,随后,运用pip install –no-cache-dir cryptography。
【新手需防坑】,别径直将系统openssl升级至3.0,否则会致使其他软件出现崩溃状况。正确办法乃是:运用ldd /usr/local/lib/python3.9/site-packages/cryptography/cryptography.so去查找缺失的库,缺啥就补啥。要是apt寻觅不到libssl1.1,那就添加老版本源或者从deb包对此进行安装。
采用此方式不适用于的场景为,诸如pycocotools这类需要编译C扩展的库,它在Windows系统上缺失VC++构建工具。可供选择的替代办法是,要么安装Visual Studio Build Tools,要么直接更换conda预编译包。在你实际进行开发期间,还碰到过哪些堪称奇葩的第三方库兼容报错情况呢?欢迎在评论区张贴出你的版本组合以及报错截图,通过点赞分享使得更多同仁少走冤枉路。
微信扫一扫
还没有评论呢,快来抢沙发~