我在Ubuntu 22.04.4上使用Python 3.10,我试图运行我最初在Windows 11机器上编写的代码.每当我运行这个脚本——main.py——它总是停止在导入阶段,尤其是导入beautifulsoup4yfinance失败:

print("Starting imports.")
import pandas
print("Imported pandas...")
from bs4 import BeautifulSoup
print("Imported beautifulsoup4...")
import yfinance as yf
print("Imported yfinance...")

# Rest of code...

当我在终端中运行这个脚本时,它只打印Starting imports. Imported pandas...个.在这篇文章之后,它吐出了Illegal instruction (core dumped):

(myenv) minime@Shaguar:~/Coding/WebScraping$ python main.py
Starting imports.
Imported pandas...
Illegal instruction (core dumped)

我对这个"非法指令"错误做了一些研究,并遇到了由于不兼容的CPU架构而导致的TensorFlow、numpy和其他错误的导入失败,但我不知道在这种情况下它将如何适用于beautifulsoup4.

如何成功导入beautifulsoup4yfinance而不会出现Illegal instruction (core dumped)错误?

(建筑输出lscpu):

Architecture:            x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         36 bits physical, 48 bits virtual
  Byte Order:            Little Endian

推荐答案

我解决了!在进一步判断/var/log/syslog—Ubuntu错误/警告日志(log)文件—我发现有一个问题与一些etree的东西:

kernel: [ 3887.864653] traps: python3[5907] trap invalid opcode ip:74ab4c0807c0 sp:7fffee156560 error:0 in etree.cpython-310-x86_64-linux-gnu.so[74ab4c04e000+329000]

在对etree和它的用途进行了一些研究之后,我发现yfinancebeautifulsoup4共享的库运行在etree上是导致核心转储的原因:lxml.

我查看了lxml PyPI页面,发现最新版本(lxml 5.20)不支持2011年之前的CPU架构;我的Ubuntu机器是2009年的.所以,我删除和降级我的lxml版本v5.0使用pip和一切工作顺利.

Key Takeaway

如果您遇到类似的问题,可能是由于库或库的底层依赖项方面的CPU架构不兼容.核心转储后判断系统日志(log)文件.做一些研究,特别是CPU兼容性,在日志(log)文件中的任何特定关键字—在我的例子中是etree.最后,try 将可疑的问题库(在我的例子中是lxml)降级到支持您的架构的版本.

上面的一切都为我工作.

Python相关问答推荐

如何自动抓取以下CSV

如何在箱形图中添加绘制线的传奇?

追溯(最近最后一次调用):文件C:\Users\Diplom/PycharmProject\Yolo01\Roboflow-4.py,第4行,在模块导入roboflow中

我们可以为Flask模型中的id字段主键设置默认uuid吗

运输问题分支定界法&

在Python argparse包中添加formatter_class MetavarTypeHelpFormatter时, - help不再工作""""

cv2.matchTemplate函数匹配失败

在含噪声的3D点网格中识别4连通点模式

如何合并两个列表,并获得每个索引值最高的列表名称?

如何在TensorFlow中分类多个类

python中csv. Dictreader. fieldname的类型是什么?'

从一个df列提取单词,分配给另一个列

为用户输入的整数查找根/幂整数对的Python练习

如何使用pytest在traceback中找到特定的异常

修改.pdb文件中的值并另存为新的

对数据帧进行分组,并按组间等概率抽样n行

如何关联来自两个Pandas DataFrame列的列表项?

无法使用请求模块从网页上抓取一些产品的名称

普洛特利express 发布的人口普查数据失败

如何在基于时间的数据帧中添加计算值