У меня есть структура каталогов проекта:Проблема импорта расширение скомпилирован с numpy.distutils
myproject/
setup.py
myproject/
editors/
....
utilities/
...
find_inf.f90
Все файлы проекта являются питона, для одного FORtran файла, который я указано иное. Теперь я могу использовать setuptools
для установки моего проекта без файла fortran просто отлично, но для включения файла fortran я должен использовать numpy.distutils.core.Extension
. Таким образом, у меня есть настройки файлов, как это:
from setuptools import find_packages
from numpy.distutils.core import Extension
ext1 = Extension(name = 'myproject.find_inf',
sources = ['myproject/utilities/find_inf.f90'],
extra_f90_compile_args=['-fopenmp',],
libraries=['gomp'])
if __name__ == "__main__":
from numpy.distutils.core import setup
setup(name = 'myproject',
packages=find_packages(),
package_data={
......
},
entry_points={
'console_scripts': [....]
},
ext_modules = [ext1]
)
Это создает и устанавливает myproject-2.0-py2.7-macosx-10.6-x86_64.egg
в каталоге site-packages
и структура каталогов выглядит следующим образом:
myproject-2.0-py2.7-macosx-10.6-x86_64.egg
myproject
editors\
find_inf.pyc
find_inf.so.dSYM/
find_inf.py
find_inf.so*
__init__.py
__init__.pyc
Так он смотрит на меня, что я должен быть в состоянии импорт find_inf
из myproject
. Но я не могу! Запись from myproject import find_inf
создает ошибку импорта. Что я делаю не так?
UPDATE:
Если я случайно имя расширения от my project.find_inf
только find_inf
то установка ставит расширение непосредственно в myproject-2.0-py2.7-macosx-10.6-x86_64.egg
. Если тогда я вручную перемещаю файлы find_inf оттуда до myproject-2.0-py2.7-macosx-10.6-x86_64.egg/myproject
, тогда я могу импортировать расширение. Я до сих пор не могу понять это. Что-то явно не так в моем setup.py, что не поставив расширение в нужном месте ....
UPDATE: Фигурные его. Ответ ниже.
Можете ли вы показать трассировку. –
отслеживающий довольно лаконична, это просто: '' ImportError Traceback (самый последний вызов последнего) в () ----> 1 из MyProject импорта find_inf ImportError: не может импортировать имя find_inf'' –
deepak
Действительно ли 'find_inf.f90' действительно находится в' myproject', а не в подкаталоге? –