首页 > 其他分享 >虚拟环境迁移问题排查

虚拟环境迁移问题排查

时间:2023-04-11 09:45:47浏览次数:47  
标签:python 离线 问题 排查 虚拟环境 版本 迁移 安装

背景

某项目开发过程中python虚拟环境通过anaconda conda创建,然后将该虚拟环境直接复制到开发环境中,将整个项目打包成exe之后,出现了一个奇怪的问题:在win8,win10,win11上均没有问题,但在win7上运行过程中出现了缺包的问题。

  • 【WinError127】找不到指定的程序:pywin32_system32和numpy\.libs.

image-20221111100422322

  • 电脑版本:win7 专业版 Service Pack 1

问题排查

问题复现

我们在相同的电脑版本上,尝试进行该问题的复现。

  • 首先通过虚拟环境打开对应的python.exe。然后重新导入缺少的包:
import numpy as np

发现并为报错。

  • 针对当前项目,原来python服务是通过js命令自动调用,我们产生尝试手动启动python服务,发现其也可以正常启动。所以可以说明打包的虚拟环境没有问题。

pywin32_system32

根据网上的经验,需要将虚拟环境下pywin32_system32下包下的动态链接库复制到对应C:Windows\System32.

image-20221111093657502

(继续尝试...)

追加环境变量

将虚拟环境中的python.exe的安装路径添加到环境变量中.

(然并卵,继续复现...)。

win7 上安装python

版本问题

如指定PEP 11,Python 版本仅支持 Windows 平台,而 Microsoft 认为该平台处于扩展支持之下。这意味着 Python 3.11 支持 Windows 8.1 和更新版本。如果您需要 Windows 7 支持,请安装 Python 3.8。

帮助文档:在 Windows 上使用 Python

当前版本(python3.8.5 )支持

在win7 sp1上安装Python3.8

网上资源

stackoverflow:Installing Python 3.8 on windows 7 32bit with SP1

![(C:/Users/B_Hanan/AppData/Roaming/Typora/typora-user-images/image-20221111091552434.png)

image-20221111091609531

验证过程

查看当前电脑的补丁库,发现补丁KB2533623已经存在,所以我们先手动卸载,重新打开python.exe发现,可以复现缺包的问题。然后我们重新安装该补丁,缺包问题解决。

在此基础上,我们回退我们之前的操作:移除追加的环境变量、移除动态链接库,发现一切仍然正常可以使用。

所以在当前问题中影响python虚拟环境缺包的真正问题应该是win7系统缺少"KB2533623"导致.

资源链接:Here

离线包安装

背景

将python库及其依赖包下载下来,然后离线安装。

下载离线包的方式:

image-20221121095403385

需求:安装pymoo库

step1:创建与现场python版本相同的虚拟环境;

step2:创建requirement.txt :里面写pymoo(即我们需要离线下载的库,如果版本未知,可以不写);

step3:使用下述命令进行下载:

pip download -d dir -r requirement.txt
# dir是所有依赖包存放的位置;

step4:然后将所有下载好的文件导入到目标服务器,然后使用下述命令进行安装:

pip install --no-index --find-links=dir -r requirement.txt

注:离线下载时需保持包环境与安装环境一致,即一般情况下windows下导的包在windows上安装;linux下导的包在linux上安装.

实践过程中出现的问题:

supported

出现上述问题,比较郁闷,在本地服务器上顺顺利利,但客户现场就是报错。

问题排查

排查项 命令 排查结果
系统架构 arch 都是x86_64
系统core cat /etc/redhat-release centos7.6(客户)/centos7.9(本地)
python版本 python 3.6.3(客户)/3.6.5(本地)[本地重新创建3.6.3环境后发现,下载的离线包与之前的版本全部一致]
pip pip.__version__ 9.0.1(客户)/21.2.2(本地)下载21.2.2离线安装包,然后在安装上述离线包,问题解决

标签:python,离线,问题,排查,虚拟环境,版本,迁移,安装
From: https://www.cnblogs.com/AzeHan/p/17305110.html

相关文章

  • 迁移学习《Cluster-Guided Semi-Supervised Domain Adaptation for Imbalanced Medica
    论文信息论文标题:Cluster-GuidedSemi-SupervisedDomainAdaptationforImbalancedMedicalImageClassification论文作者:S.Harada,RyomaBise,KengoAraki论文来源:ArXiv2March2023论文地址:download 论文代码:download视屏讲解:click1摘要一种半监督域自适应方法,......
  • gitlab——项目代码迁移
    gitlab——项目代码迁移目的:将原来服务器上的项目代码迁移到另一台服务器上。step1.首先新建一个空文件,将原服务器代码取下来:gitclonehttp://***(原服务器代码地址)step2.进入到取下来的git项目文件夹中:cd*****(取下来的项目文件夹路径)注:step1和step2相当于拉取线......
  • conda虚拟环境
    Conda的虚拟环境是一种可以让您在同一台计算机上创建和管理多个相互独立的Python环境的工具。每个虚拟环境可以具有自己的Python解释器和包集合,这意味着您可以在不同的虚拟环境中安装和管理不同版本的Python包,而不会相互干扰。以下是使用Conda创建和管理虚拟环境的步骤:安装Conda......
  • 异常检测 | 迁移学习《Anomaly Detection in IR Images of PV Modules using Supervis
    论文信息论文标题:AnomalyDetectioninIRImagesofPVModulesusingSupervisedContrastiveLearning论文作者:AbhayRawat, IshaDua, SauravGupta, RahulTallamraju 论文来源:LukasBommes,MathisHoffmann,ClaudiaBuerhop-Lutz,TobiasPickel,JensHauch,Christ......
  • [已解决] 记录一次排查错误Invalid character found in the HTTP protocol
    环境Tomcat8.x报错InvalidcharacterfoundintheHTTPprotocol[HTTP/1.1Connection:]分析查看localhost_access_log.txt发现:HEAD/400都是HEAD请求,且返回都是400,毕竟HTTP协议的字符不正确。调研Howtosolve"InvalidcharacterfoundintheHTTPprotocol[......
  • 前端报错时如何排查问题
    前端页面报错: 1、页面报错500,首先我们可以知道是服务端的问题,需要去看下服务端的报错信息:2、首先我们查看下前端是否给后端传了id: 我们可以看到接口是把ID返回了,就需要再看下p_id是什么情况了 3、我们再次请求,把p_id进行打印,看下具体是什么:put接口代码classPutV......
  • CDH集群之间迁移hive数据脚本
    #!/bin/bash#set-xDB=$1#获取hive表定义ret=$(hive-e'use${DB};showtables;'|grep-v_es|grep-v_hb|grep-vimportinfo)fortemin$ret;dohive-e"use${DB};showcreatetable$tem">>/tmp/secha.shecho-e';\c&......
  • Python-venv-创建和管理虚拟环境
    Python-venv-创建和管理虚拟环境https://docs.python.org/3/tutorial/venv.html概述Python应用程序通常会使用不在标准库内的软件包和模块。应用程序有时需要特定版本的库,因为应用程序可能需要修复特定的错误,或者可以使用库的过时版本的接口编写应用程序。这意味着一个Pytho......
  • 迁移学习(SPI)《Semi-Supervised Domain Adaptation by Similarity based Pseudo-label
    论文信息论文标题:Semi-SupervisedDomainAdaptationbySimilaritybasedPseudo-labelInjection论文作者:AbhayRawat, IshaDua, SauravGupta, RahulTallamraju 论文来源:PublishedinECCVWorkshops5September2022论文地址:download 论文代码:download视屏讲解:click......
  • Docker-compose 到 Kubernetes 的迁移工具!
    在skippbox,我们开发了Kompose这一工具,他能够自动把DockerCompose应用转换为Kubernetes描述文件。利用一个简单的komposeup 命令,就可以在Kubernetes集群上启动Compose应用。我们非常乐于将其捐献给KubernetesIncubator。下面介绍一下这一工具的开发动机和用法......