2015-09-13 3 views
1

Хорошо, так что я пытаюсь импортировать модуль в папки, упакованные внутри файла .pyd. Вот то, что будет работать для меня:ImportError при импорте файла python в pyd

from apple import __init__ 

С яблока является .pyd в том же каталоге, что и сценарий Python, и __init__ конечно упаковывается внутри .pyd. Это будет работать, но вот то, что я хочу сделать, но не работает:

from apple.seed.worm import WormManager 

Пояснение: яблоко = PYD семян = каталогов в PYD, червь = каталог в каталоге семян в яблочном PYD, WormManager = python в каталоге червя.

Однако, это не сработает и приводит к тому, что модуль не найден. ImportError считает, что семя является модулем (и в его исходном каталоге __init__ перед его упаковкой). Конечно, он существует и упакован в .pyd, но он просто не работает. Я даже сделал это:

from apple.seed import __init__ 

но даже не работает, поэтому я знаю, что я не импортирую это право.

Я действительно не смог найти правильный синтаксис, чтобы заставить это работать в Интернете, и, конечно, я знаю, как это сделать без участия pyd, поэтому любая помощь?

ответ

0

Сначала необходимо запустить C:\path\to\pip\tool\pip install pyd из командной строки.

+0

Я просто сделал, не совсем уверен, как это помогает ... Не могли бы вы немного подробнее о том, как вы решаете проблему импорта? – billyands55

+0

Кроме того, я не думаю, что вы понимаете, что я имею в виду. A .pyd - это то же, что и .dll, но для Python, а не для этой вещи. – billyands55

0

Я не уверен, но я думаю, что Python не может динамически обнаруживать внутренний API pyd, не импортируя его в первую очередь.

Вы должны попытаться импортировать PYD первый:

import apple 

Тогда вы можете (вероятно) доступ к внутренним API:

WM = apple.seed.worm.WormManager 

Кроме того, ваш apple.pyd DLL файл должен содержать функцию PyInit_apple() пер official documentation. Если это не так, или если оно плохо определено (не определяет все подмодули), это может объяснить, почему вы не можете сделать from apple ....

Смежные вопросы