【问题标题】:Python requests-html throwing multiprocessing errorPython requests-html 抛出多处理错误
【发布时间】:2018-11-27 09:40:08
【问题描述】:

我正在尝试将我的网络抓取程序从使用 requests 库转移到 requests-html 库,以允许我在网页上呈现 javascript。在导入模块时会抛出此错误:

Traceback (most recent call last):
  File "backend2.py", line 2, in <module>
    import requests_html
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/requests_html.py", line 9, in <module>
    import pyppeteer
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyppeteer/__init__.py", line 30, in <module>
    from pyppeteer.launcher import connect, launch, executablePath  # noqa: E402
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyppeteer/launcher.py", line 24, in <module>
    from pyppeteer.browser import Browser
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyppeteer/browser.py", line 15, in <module>
    from pyppeteer.page import Page
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyppeteer/page.py", line 20, in <module>
    from pyppeteer.coverage import Coverage
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyppeteer/coverage.py", line 15, in <module>
    from pyppeteer.util import merge_dict
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyppeteer/util.py", line 10, in <module>
    from pyppeteer.chromium_downloader import check_chromium, chromium_executable
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyppeteer/chromium_downloader.py", line 15, in <module>
    from tqdm import tqdm
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tqdm/__init__.py", line 1, in <module>
    from ._tqdm import tqdm
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/tqdm/_tqdm.py", line 75, in <module>
    mp_lock = mp.RLock()  # multiprocessing lock
AttributeError: module 'multiprocessing' has no attribute 'RLock'

感谢任何帮助!

【问题讨论】:

  • 你的项目中有一个名为multiprocessing的模块。
  • 我没有在我的项目中创建任何multiprocessing 模块
  • 检查多处理.__file__.

标签: python python-3.x python-requests multiprocessing python-requests-html


【解决方案1】:

您使用的是 Python 3.7,但 requests-html 的 github 声明 only Python 3.6 is supported(页面底部)。当我尝试使用 Python 3.7 时遇到各种可怕的错误,但 3.6 工作正常。所以,我知道这似乎很奇怪,但请尝试使用 3.6

即便如此,正如@georgexsh 所说,在 3.7 中仍然应该有一个 RLock 可用于从 multiprocessing 导入,所以看起来您的错误实际上可能是您的代码文件之一被称为 multiprocessing.py 或者您拥有您自己的名为 multiprocessing 的包(因此您正在导入它而不是您想要的模块)。

【讨论】:

  • 我认为这可能会有所帮助(使用 3.6.6),尽管现在程序无法导入,因为 from multiprocessor import simpleQueue 会抛出 ImportError: cannot import name SimpleQueue。 (我可能最终会发布与此相关的另一个问题)
  • @S.Allen 那应该是from multiprocessing import SimpleQueue
  • 对不起,那是给我的multiprocessing,我应该有 ctrl-c/v。我也尝试重新安装多处理无济于事。
  • @S.Allen 我真的很怀疑您在路径中的某处还有另一个名为 multiprocessing 的模块。如果您按照此处的说明使用multiprocessing a_module,输出是什么?
  • 我确实做到了,这解决了这个问题。不知何故,我设法避免在当前工作目录中向下滚动,那里有一个 multiprocessing.py 文件,谢谢。
猜你喜欢
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
  • 2022-07-25
  • 1970-01-01
相关资源
最近更新 更多