У меня есть простой пакет питона со следующей структурой:Модули Python, ссылающиеся на другие модули в одном пакете?
wibble
|
|-----foo
| |----ping.py
|
|-----bar
| |----pong.py
Простой вопрос: Как бы я ссылаться на функцию/класс в ping.py
от pong.py
? Просматривая документацию, это выглядит так же просто, как создание файлов __init__.py
в корне wibble
, foo
и bar
, а затем от pong.py
что-то вроде from wibble.foo.ping import important_function
. Однако, попытка этого приводит к No module named wibble.foo.ping
.
Я уверен, что кое-что пропустил в документации, потому что это должно быть возможно. Я также немного туман на дифференциации между module
и namespace
, мой фон - C# .net, поэтому любые аналоги здесь будут полезны.
В Windows, так что это будет 'PATH =% PATH%; c: \ path \ to \ wibble' (просто гадать из-за ссылки C# .net.) – alan
Я должен был сказать - это разрабатывается на * nix. Моя озабоченность по поводу этого решения заключается в том, что он жестко привязывает абсолютное расположение пакета к кодовой базе/инфраструктуре. Учитывая, что эти файлы легко локализуются относительно друг друга, почему «понг» не знает, что он находится в пакете 'wibble', а затем находит« ping »таким образом? – growse
Вы можете динамически угадать местоположение файла pong.py и добавить папку wibble в путь python, но, безусловно, это плохая практика – diegueus9