gpt4 book ai didi

python - 在 SublimeREPL 中导入 urllib2 会出现 ImportError

转载 作者:行者123 更新时间:2023-12-01 05:05:38 24 4
gpt4 key购买 nike

我在 Sublime Text 3 中安装了 SublimeREPL,它运行得很好。但是,每当我尝试导入使用 _socket 的模块(例如 urllib2 和 urllib)时,都会出现 ImportError。我运行 os.path 来验证路径是否正确。它在 python 命令行中也可以完美运行,只是在 SublimeREPL 中不行。

>>> import urllib2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "E:\Python27\lib\urllib2.py", line 94, in <module>
import httplib
File "E:\Python27\lib\httplib.py", line 71, in <module>
import socket
File "E:\Python27\lib\socket.py", line 47, in <module>
import _socket
ImportError: DLL load failed: %1 is not a valid Win32 application.

最佳答案

几乎可以肯定,您正在混合使用 Python 安装。也就是说,您有使用 64 位 Python 的 SublimeREPL,但同一台计算机上也有 32 位 Python,并且您的 PYTHONPATH 配置为指向 32 位Python 的库而不是/领先于它自己的库。

或者,更糟糕的是,您将两个 Python 安装到同一目录,并且您有一个安装,部分是 64 位,部分是 32 位。 (如果是这种情况,您将从命令行使用 Python 时会得到相同的错误。)

混合 native 和 Cygwin Python、CPython 和 IronPython,或者有时甚至使用不同标志编译的两个版本,或两个不同的 X.Y 版本,也可能导致此问题,但 32 位和 64 位是最常见的原因。

urllib2本身加载的原因是Python 2.7源是Python 2.7源代码;它来自什么构建并不重要。但是编译到 DLL 中的 C 扩展是针对特定的 Python 解释器编译的,并且仅适用于该解释器。如果 Windows DLL 加载器没有拒绝让 Python 继续运行,稍后您就会收到另一个错误。

当我们这样做时,Python 在 3.3 左右改进了这种情况的错误处理,使得更容易判断发生了什么,但当然,如果你坚持使用 2.7,你不会获得新功能。

<小时/>

在 Python 内部,判断您使用的是 32 位还是 64 位解释器的最快方法是 sys.getmaxsize。如果是2、40亿左右,那你就是32位的;如果大约是 9 或 18 位,则说明您是 64 位的。

在 Windows 上确定 DLL 是 32 位还是 64 位显然比在宇宙中任何其他平台上要困难得多。请参阅this questionthis one了解详情。

关于python - 在 SublimeREPL 中导入 urllib2 会出现 ImportError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25102466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com