У меня есть проект Python, в котором я хочу использовать класс C++
, который я открывал через Cython (действительно, мне просто нужен конкретный экземпляр класса, так как приведенный ниже код будет демонстрировать). Потому что была куча файлов, связанных с классом, я решил поместить его в свой собственный пакет.Импорт Cython подвергается классу из другого каталога
В __init__.py
файл этого пакета, у меня есть то, что составляет следующий код:
from foo import Foo # import the class
bar = Foo(some_parameters)
__all__ = ["bar"]
Это прекрасно работает, когда я бегу __init__.py
сам по себе. Однако, когда я пытаюсь получить доступ к нему из-за пределов каталога:
from qux import bar # inside main.py in the parent directory
Я получаю ошибку прослежена назад к же__init__.py
:
File "D:\path\to\qux\\__init__.py", line 2, in <module>
from foo import Foo
ImportError: No module named 'foo'
Напомним, что foo
является файлом Cython, не чисто Код Python.
структура каталогов выглядит следующим образом:
main_project\
main.py
(more supporting files here)
qux\
__init__.py
cy_foo.cpp
cy_foo.pyx
foo.cpp
foo.h
foo.cp35-win_amd64.pyd
(more supporting files here)
Что происходит?
Это было исправлено! Наверное, я пытался сделать эквивалент чего-то вроде «import scipy; от оптимизации импорта brentq' без квалификации 'optimize', принадлежащей' scipy'. Мне просто не приходило в голову, что Python все еще будет искать в верхнем каталоге при запуске скрипта в подкаталоге. –