【问题标题】:Import Error:DLL failed when using scrapy in command prompt导入错误:在命令提示符下使用 scrapy 时 DLL 失败
【发布时间】:2017-11-07 17:42:33
【问题描述】:

我在尝试使用 scrapy 命令创建文件夹时遇到以下问题。我尝试搜索此问题并在https://groups.google.com/forum/#!topic/scrapy-users/8N6V_OGUqtI 找到了解决方案 我尝试了那里提供的步骤,但仍然遇到此问题。

如能帮助解决此问题,我们将不胜感激。

(C:\Users\dell\Anaconda3) C:\Users\dell>activate scrapy-env

(scrapy-env) C:\Users\dell>scrapy startproject tutorial
Traceback (most recent call last):
  File "C:\Users\dell\Anaconda3\envs\scrapy-env\Scripts\scrapy-script.py", line 5, in <module>
    sys.exit(scrapy.cmdline.execute())
  File "C:\Users\dell\Anaconda3\envs\scrapy-env\lib\site-packages\scrapy\cmdline.py", line 128, in execute
    cmds = _get_commands_dict(settings, inproject)
  File "C:\Users\dell\Anaconda3\envs\scrapy-env\lib\site-packages\scrapy\cmdline.py", line 46, in _get_commands_dict
    cmds = _get_commands_from_module('scrapy.commands', inproject)
  File "C:\Users\dell\Anaconda3\envs\scrapy-env\lib\site-packages\scrapy\cmdline.py", line 29, in _get_commands_from_module
    for cmd in _iter_command_classes(module):
  File "C:\Users\dell\Anaconda3\envs\scrapy-env\lib\site-packages\scrapy\cmdline.py", line 19, in _iter_command_classes
    for module in walk_modules(module_name):
  File "C:\Users\dell\Anaconda3\envs\scrapy-env\lib\site-packages\scrapy\utils\misc.py", line 71, in walk_modules
    submod = import_module(fullpath)
  File "C:\Users\dell\Anaconda3\envs\scrapy-env\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\dell\Anaconda3\envs\scrapy-env\lib\site-packages\scrapy\commands\version.py", line 6, in <module>
    import OpenSSL
  File "C:\Users\dell\Anaconda3\envs\scrapy-env\lib\site-packages\OpenSSL\__init__.py", line 8, in <module>
    from OpenSSL import rand, crypto, SSL
  File "C:\Users\dell\Anaconda3\envs\scrapy-env\lib\site-packages\OpenSSL\rand.py", line 10, in <module>
    from OpenSSL._util import (
  File "C:\Users\dell\Anaconda3\envs\scrapy-env\lib\site-packages\OpenSSL\_util.py", line 6, in <module>
    from cryptography.hazmat.bindings.openssl.binding import Binding
  File "C:\Users\dell\Anaconda3\envs\scrapy-env\lib\site-packages\cryptography\hazmat\bindings\openssl\binding.py", line 13, in <module>
    from cryptography.hazmat.bindings._openssl import ffi, lib
ImportError: DLL load failed: The operating system cannot run %1.

【问题讨论】:

    标签: python command-line scrapy scrapy-shell


    【解决方案1】:

    以防万一其他人在这里结束,这对我有用:我在从 anaconda 提示符运行 scrapy 时遇到了同样的错误。通过在进程监视器上查看,在 Anaconda3\Lib\site-packages\cryptography\hazmat\bindings 中找不到这两个 dll 文件引起的。 将 Anaconda3\pkgs\openssl-1.0.2o-h8ea7d77_0\Library\bin 中的两个文件复制到 Anaconda3\Lib\site-packages\cryptography\hazmat\bindings 中,就可以了

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,并在https://github.com/scrapy/scrapy/issues/3447找到了解决方案

      conda update -n base conda
      

      事实证明,该错误仅发生在 PyCharm 内部,解决方案是根据 https://github.com/conda/conda/issues/8046#issuecomment-450515815 安装 OpenSSL

      【讨论】:

        【解决方案3】:

        确保您安装了与您的 Python 安装相匹配的正确库。如果您正在运行 Python 32 位,请安装库的 32 位版本。如果您是 Python x64,请安装 x64 版本的库。这是导致此错误的最常见原因。

        【讨论】:

        • 感谢您提供信息。我检查了一下,我使用的是 64 位 Python。我使用 pip 和 conda 安装了scrapy。有没有办法安装x64版本的库
        • 运行python,完全不带任何参数。在描述版本的第一行中,您应该看到64 bit (AMD64)32 bit。忽略win32,因为它并不一定意味着您在 32 位上运行。
        • 我检查过,我使用的是 64 位 Python。我使用 pip 和 conda 安装了scrapy。有没有办法安装x64版本的库
        • 如果您使用(正确的)pip,它应该已经是正确的版本。但它不是在抱怨scrapy,而是在抱怨cryptography.hazmat.bindings._openssl。你是用 pip 安装的吗?你在C:\Users\dell\Anaconda3\envs\scrapy-env\lib\site-packages 的某个地方有_openssl.pyd 吗?尝试重新安装正确的cryptography 包。
        • 我在文件夹 C:\Users\dell\Anaconda3\pkgs\cryptography-2.0.3-py36_0\Lib\site-packages\cryptography\hazmat\bindings 中有文件 _openssl.pyd跨度>
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-08
        • 1970-01-01
        • 2022-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-14
        相关资源
        最近更新 更多