импорт ctypes не работает на python 2.5 - PullRequest
5 голосов
/ 27 декабря 2010

Я пытаюсь импортировать ctypes, и я использую Python 2.5.5, установленный с помощью macports (в Mac OS X 10.6).

Я получаю сообщение об ошибке «ImportError: нет модуля с именем _ctypes» (подробности см. Ниже).Насколько я понимаю, ctypes должен быть предустановлен для Python 2.5.Любые предложения?

спасибо, Saurabh

Сведения об ошибке:

$ python
Python 2.5.5 (r255:77872, Nov 30 2010, 00:05:47) 
[GCC 4.2.1 (Apple Inc. build 5659)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/ctypes/\_\_init\_\_.py", line 10, in <module>
    from _ctypes import Union, Structure, Array
ImportError: No module named _ctypes

Обновление: я проверил каталог /opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload на основе ответа Неда.Файл _ctypes.so отсутствует, однако есть два связанных файла:

-rwxr-xr-x  2 root  wheel  136176 Nov 30 00:07 _ctypes_failed.so
-rwxr-xr-x  2 root  wheel   26160 Nov 30 00:05 _ctypes_test.so

Означает ли это, что мне нужно переустановить ctypes?

Обновление 2: переустановка python 2.5 решаетпроблема.Не совсем уверен, что вызвало первоначальную проблему.

Ответы [ 3 ]

1 голос
/ 27 декабря 2010

Последняя версия Mac OS X поставляется с Python 2.6.Попробуйте использовать это вместо macports.Импорт ctypes работает уже в моей системе.

Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes
>>>
1 голос
/ 27 декабря 2010

Это может быть проблема с правами доступа к файлу.У меня нет удобной установки MacPorts Python 2.5, но на основе MacPorts Python 2.6 должен быть файл, похожий на этот:

$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.5
$ cd ./lib/python2.5/lib-dynload/
$ ls -l _ctypes.so 
-rwxr-xr-x  2 root  wheel  151536 Oct  8 00:26 _ctypes.so*

Если нет, обновите ваш вопрос с результатами ls -l из каталога lib-dynload выше.

Обновление: на основании вашей дополнительной информации наличие _ctypes_failed.so указывает, что сборка _ctypes не удалась во время сборки и установки Python 2.5.Попробуйте переустановить его в подробном режиме, чтобы увидеть, что это за ошибка:

$ port sudo selfupdate
$ port -v upgrade --force python25
0 голосов
/ 27 декабря 2010

Установите libffi, затем пересоберите Python.

...