Как я могу импортировать расширение C ++ Python в модуль в другом каталоге? - PullRequest
2 голосов
/ 13 февраля 2010

Вот структура каталогов:

app/
    __init__.py
    sub1/
        __init__.py
        mod1.py
    sub2/
        __init__.py
        sub2.so
        test_sub2.py
  • Папка приложения на моем PYTHONPATH
  • Все файлы __init__.py пусты.
  • Общая библиотека sub2.so - это модуль расширения C ++, который я скомпилировал с использованием cmake и boost-python.
  • test_sub2.py - это тестовый скрипт для класса, определенного в sub2.so.
  • Если я запускаю test_sub2.py из каталога sub2, он правильно импортирует модуль и тест проходит успешно.

Как импортировать класс A из sub2.so в mod1.py?

Ответы [ 3 ]

2 голосов
/ 13 февраля 2010

Способ импортировать это импортировать app.sub2.sub2 из любого исходного файла. Ваш тест должен фактически находиться за пределами app и использовать этот путь к модулю, чтобы добраться до модуля расширения.

0 голосов
/ 13 февраля 2010

Использовать относительный импорт:

from ..sub2.sub2 import A

Это похоже на относительный путь "../sub2/sub2.so".

0 голосов
/ 13 февраля 2010

Попробуйте

import .app.sub2.sub2 

в вашем файле mod1.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...