Ошибка загрузки DLL 64-битного Python 2.5 / 2.6 + Windows 7 «гнездо импорта» - PullRequest
4 голосов
/ 13 марта 2011

Я установил последний 64-битный Python 2.5.Я запускаю оболочку и пытаюсь import socket, и получаю:

>>> import socket
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\python25\lib\socket.py", line 45, in <module>
    import _socket
ImportError: DLL load failed with error code 193

Я пытаюсь сделать то же самое с 64-битным Python 2.6.6, и получаю:

>>> import socket
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\python26-64\lib\socket.py", line 46, in <module>
    import _socket
ImportError: DLL load failed: %1 is not a valid Win32 application.

чтосделка?(Я дважды проверил, да, ОС 64-битная).

ОБНОВЛЕНИЕ: У меня также есть 32-битный Python, установленный на этом компьютере ... Если это конфликт, как я могу установить обе версии Python и заставить их вести себя хорошо?

Ответы [ 2 ]

8 голосов
/ 13 марта 2011

Эти две ошибки одинаковы, код 193, сообщается двумя разными способами. Это вызвано тем, что ваш 64-битный Python пытается загрузить 32-битную DLL.

Трудно сказать точно, почему это произошло. Возможно, вы по ошибке установили некоторые 32-битные модули Python. Возможно, в путях есть путаница.

Однако зачастую самый простой способ обойти проблему такого рода - это переключиться на 32-битный Python, который безупречно работает на 64-битной Windows. Дополнительным преимуществом является то, что вы иногда захотите использовать модули, которые доступны только в 32-битной форме - поддержка 64-битных модулей все еще немного нестабильна.

0 голосов
/ 29 октября 2015

Это случилось со мной, когда я использовал py2exe для создания (32-разрядного) двоичного файла, а затем запустил 64-разрядный интерпретатор в том же каталоге.Очевидно (и разумно) он выберет локальный экземпляр модуля сокета (который затем загружает 32-битную DLL) поверх модуля сокета интерпретатора (который правильно загружает 64-битную DLL).

...