Я работаю над пакетом Python с именем "lehmer", который включает в себя несколько модулей расширения, написанных на C. В настоящее время у меня есть один модуль расширения, "rng". Я использую дистрибутив Python для сборки и установки модуля. Я могу скомпилировать и установить модуль, но когда я пытаюсь импортировать модуль, используя import lehmer.rng
или from lehmer import rng
, интерпретатор Python выдает исключение ImportError
. Я могу импортировать "Лемер" хорошо.
Вот содержимое моего setup.py
файла:
from distutils.core import setup, Extension
exts = [Extension("rng", ["lehmer/rng.c"])]
setup(name="lehmer",
version="0.1",
description="A Lehmer random number generator",
author="Steve Park, Dave Geyer, and Michael Dippery",
maintainer="Michael Dippery",
maintainer_email="mpd@cs.wm.edu",
packages=["lehmer"],
ext_package="lehmer",
ext_modules=exts)
Когда я перечисляю содержимое каталога site-packages
в Python, я вижу следующее:
th107c-4 lehmer $ ls /scratch/usr/lib64/python2.5/site-packages/lehmer
__init__.py __init__.pyc rng.so*
Моя переменная окружения PYTHONPATH
установлена правильно, так что это не проблема (и, как отмечалось ранее, я могу import lehmer
просто отлично, поэтому я знаю , что PYTHONPATH
не проблема) , Python использует следующие пути поиска (как сообщает sys.path
):
['', '/scratch/usr/lib64/python2.5/site-packages', '/usr/lib/python25.zip', '/usr/lib64/python2.5', '/usr/lib64/python2.5/plat-linux2', '/usr/lib64/python2.5/lib-tk', '/usr/lib64/python2.5/lib-dynload', '/usr/lib64/python2.5/site-packages', '/usr/lib64/python2.5/site-packages/Numeric', '/usr/lib64/python2.5/site-packages/PIL', '/usr/lib64/python2.5/site-packages/SaX', '/usr/lib64/python2.5/site-packages/gtk-2.0', '/usr/lib64/python2.5/site-packages/wx-2.8-gtk2-unicode', '/usr/local/lib64/python2.5/site-packages']
Обновление
Работает при использовании на коробке OpenSUSE 10, но расширения C по-прежнему не загружаются при тестировании в Mac OS X. Вот результаты интерпретатора Python:
>>> sys.path
['', '/usr/local/lib/python2.5/site-packages', '/opt/local/lib/python25.zip', '/opt/local/lib/python2.5', '/opt/local/lib/python2.5/plat-darwin', '/opt/local/lib/python2.5/plat-mac', '/opt/local/lib/python2.5/plat-mac/lib-scriptpackages', '/opt/local/lib/python2.5/lib-tk', '/opt/local/lib/python2.5/lib-dynload', '/opt/local/lib/python2.5/site-packages']
>>> from lehmer import rng
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name rng
>>> import lehmer.rngs
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named rngs
>>> import lehmer.rng
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named rng
>>> from lehmer import rngs
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: cannot import name rngs