Я работаю над пакетом Python с именем "lehmer", который включает в себя кучу модулей расширения, написанных на C. В настоящее время у меня есть один модуль расширения "rng". Я использую Python Distutils для сборки и установки модуля. Я могу скомпилировать и установить модуль, но когда я пытаюсь импортировать модуль с помощью 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="[email protected]",
packages=["lehmer"],
ext_package="lehmer",
ext_modules=exts)
Когда я перечисляю содержимое каталога Python site-packages
, я вижу следующее:
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
Для записи (и потому, что я устал видеть, что это отмечено как неотвеченный), здесь были проблемы: