属性错误: 模块 'copy'没有 'deepcopy' 属性

7

我其实是Python和BS4的新手。我决定创建一个脚本来爬取网站oscarmini.com,代码一直运行良好,直到今天我想修改它时,我一直收到错误提示。根据我对异常和错误的了解,代码似乎没有问题,问题似乎出在导入'bs4'模块上。

from bs4 import BeautifulSoup as BS
import requests
url = 'https://oscarmini.com/2018/05/techfest-2018.html'
page = requests.get(url)
soup = BS(page.text, 'lxml')
mydivs = soup.find("div", {"class": "entry-content"})
soup.find('div', id="dpsp-content-top").decompose()
print(mydivs.get_text())
input()

以下是我收到的错误消息。
Traceback (most recent call last):
    File "C:/Users/USERNaME/Desktop/My Programs/Random/Oscarmini- 
Scrapper.py", line 1, in <module>
    from bs4 import BeautifulSoup as BS
File "C:\Users\USERNaME\AppData\Local\Programs\Python\Python36-32\lib\site-packages\bs4\__init__.py", line 35, in <module>
    import xml.etree.cElementTree as default_etree
File ":\Users\USERNaME\AppData\Local\Programs\Python\Python36-32\lib\xml\etree\cElementTree.py", line 3, in <module>
    from xml.etree.ElementTree import *
File "C:\Users\USERNaME\AppData\Local\Programs\Python\Python36-32\lib\xml\etree\ElementTree.py", line 1654, in <module>
    from _elementtree import *
AttributeError: module 'copy' has no attribute 'deepcopy'

Process finished with exit code 1

我真的需要在这方面帮助...


你是否碰巧在当前目录下有一个名为 "copy.py" 的文件? - DYZ
我到底在哪里寻找“copy.py”文件?因为我在xml或xml / etree文件夹中找不到它。 - Isaac Frank
在存放Python代码的文件夹中, - DYZ
没有这个文件。。一直在工作,没有复制文件。 - Isaac Frank
1
如果之前它能够工作而现在不能工作,那就意味着有些东西发生了变化。你更新/升级了什么吗?你尝试重新安装bs了吗? - Sushant
据我所知,我没有更新/升级任何东西。是的,我已经卸载/升级并安装了bs4,但结果仍然相同。 - Isaac Frank
3个回答

20

我遇到了同样的问题。最终发现问题是我有另一个名为copy.py的脚本,它掩盖了原始的copy模块。

您可以在异常发生前使用print(copy.__file__)显示复制模块的真实路径,并查看是否符合预期。

您还可以在引起异常的代码行之前使用以下命令列出您的PATHONPATH环境变量: print(os.environ['PYTHONPATH'].split(os.pathsep)) 并查看是否存在意外情况。


我因为copy.py文件遇到了同样的问题。我已经删除了这个文件,但仍然出现错误。你对它的原因有什么见解吗?谢谢! - isabella

2

请确保项目工作目录中不存在任何copy.py文件... 例如: 项目文件夹: copy.py currentOpenFile.py # 当您导入copy模块时...


0

我的问题类似于@liyuanhe211,我有一个本地的copy.py文件,但是我有一个本地的org.py文件,所以在我的情况下运行pyspark时就会发生这种情况:

pyspark在执行import copy时,沿途进行了一些操作。

但是内置的copy.py执行了from org.python.core import PyStringMap

因此,由于我有一个import pandas as pdorg.py,看起来沿途也调用了org.deepcopy,所以它就变成了这个循环依赖关系。

但是如果没有我的org.py,那么问题就解决了。

$ pyspark
Picked up JAVA_TOOL_OPTIONS: -Djavax.net.ssl.trustStoreType=KeychainStore
Python 3.10.11 (main, Apr  7 2023, 07:33:46) [Clang 14.0.0 (clang-1400.0.29.202)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Traceback (most recent call last):
  File "/Users/hello/Downloads/2023-06-01-spark/spark-3.4.0-bin-hadoop3/python/pyspark/shell.py", line 31, in <module>
    import pyspark
  File "/Users/hello/Downloads/2023-06-01-spark/spark-3.4.0-bin-hadoop3/python/pyspark/__init__.py", line 59, in <module>
    from pyspark.rdd import RDD, RDDBarrier
  File "/Users/hello/Downloads/2023-06-01-spark/spark-3.4.0-bin-hadoop3/python/pyspark/rdd.py", line 18, in <module>
    import copy
  File "/usr/local/Cellar/python@3.10/3.10.11/Frameworks/Python.framework/Versions/3.10/lib/python3.10/copy.py", line 60, in <module>
    from org.python.core import PyStringMap
  File "/Users/hello/Repos/blah/src/org.py", line 2, in <module>
    import pandas as pd
  File "/Users/hello/.python_venvs/pandars310/lib/python3.10/site-packages/pandas/__init__.py", line 50, in <module>
    from pandas.core.api import (
  File "/Users/hello/.python_venvs/pandars310/lib/python3.10/site-packages/pandas/core/api.py", line 29, in <module>
    from pandas.core.arrays import Categorical
  File "/Users/hello/.python_venvs/pandars310/lib/python3.10/site-packages/pandas/core/arrays/__init__.py", line 20, in <module>
    from pandas.core.arrays.string_arrow import ArrowStringArray
  File "/Users/hello/.python_venvs/pandars310/lib/python3.10/site-packages/pandas/core/arrays/string_arrow.py", line 65, in <module>
    import pyarrow.compute as pc
  File "/Users/hello/.python_venvs/pandars310/lib/python3.10/site-packages/pyarrow/compute.py", line 331, in <module>
    _make_global_functions()
  File "/Users/hello/.python_venvs/pandars310/lib/python3.10/site-packages/pyarrow/compute.py", line 328, in _make_global_functions
    g[cpp_name] = g[name] = _wrap_function(name, func)
  File "/Users/hello/.python_venvs/pandars310/lib/python3.10/site-packages/pyarrow/compute.py", line 299, in _wrap_function
    return _decorate_compute_function(wrapper, name, func, options_class)
  File "/Users/hello/.python_venvs/pandars310/lib/python3.10/site-packages/pyarrow/compute.py", line 165, in _decorate_compute_function
    options_class_doc = _scrape_options_class_doc(options_class)
  File "/Users/hello/.python_venvs/pandars310/lib/python3.10/site-packages/pyarrow/compute.py", line 112, in _scrape_options_class_doc
    doc = docscrape.NumpyDocString(options_class.__doc__)
  File "/Users/hello/.python_venvs/pandars310/lib/python3.10/site-packages/pyarrow/vendored/docscrape.py", line 151, in __init__
    self._parsed_data = copy.deepcopy(self.sections)
AttributeError: partially initialized module 'copy' has no attribute 'deepcopy' (most likely due to a circular import)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接