You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为何Python脚本在Windows 10正常运行,Linux下却执行失败?

Linux下Python脚本执行失败的原因分析及解决办法

先帮你拆解下这个脚本在Windows正常运行、Linux却跑崩的几个核心原因,都是跨系统开发容易踩的坑:

1. 依赖库缺失或安装不完整

你脚本里用到了requestsBeautifulSouplxml解析器,Windows环境下你可能早就通过pip装好了这些包,但Linux环境下很可能没装,或者lxml的系统依赖没搞定:

  • lxml不是纯Python库,它依赖Linux系统的底层开发包:Debian/Ubuntu系需要libxml2-devlibxslt1-dev,RHEL/CentOS系需要libxml2-devellibxslt-devel。如果直接pip install lxml,大概率会编译失败,导致脚本无法解析HTML。
  • 解决办法:先装系统依赖,再装Python包。比如Ubuntu下:
    sudo apt-get install libxml2-dev libxslt1-dev python3-dev
    pip install requests beautifulsoup4 lxml
    

2. URL中的HTML实体编码问题

你脚本里的URL用了&(这是HTML里&的实体编码),Windows下requests可能自动帮你转义成了正常的&,但Linux下的环境或requests版本可能没做这个处理,导致请求的URL是错误的——服务器收到的参数是&而非&,返回的页面根本不是你要的计算结果页,自然找不到target-value类的元素,触发except块的失败提示。

  • 解决办法:把所有&替换成&,修正后的URL示例:
    urlCalculator = 'https://salecalc.com/ebay?t=1&cp=12&b=&sp=&s=&r=&q=1&ct=45&sc=&mc=&pt=2&g=15&c=11&fi=on&st=0&pl=1&pe=2.9&pf=0.30&m=1&o=0'
    

3. User-Agent被网站拦截

有些网站会根据请求的User-Agent判断是否为爬虫,Windows下requests的默认User-Agent带有Windows相关标识,网站愿意返回内容;但Linux下requests的默认User-Agent是python-requests/版本号 (Linux),可能被网站拦截,返回403页面或空白页,导致找不到目标元素。

  • 解决办法:手动设置User-Agent,模拟浏览器请求:
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
    source = requests.get(urlCalculator, headers=headers).text
    

4. SSL证书验证失败

Linux系统的CA证书库可能没有包含目标网站的证书,或者证书库过时,导致requests请求HTTPS网站时验证证书失败,无法获取页面内容。

  • 解决办法:要么更新系统的CA证书(比如Ubuntu下sudo apt-get install ca-certificates),要么临时关闭证书验证(不推荐,有安全风险):
    source = requests.get(urlCalculator, verify=False).text
    

你可以先从URL编码和依赖库这两个最常见的问题排查,大概率能解决~

内容的提问来源于stack exchange,提问作者Sika Newman

火山引擎 最新活动