Я, кажется, периодически сталкиваюсь с этой проблемой.Не удается запустить мои операторы импорта с помощью модуля верхнего уровня (исходная папка)
Иногда у меня есть проект PyDev, в котором я получаю ошибки компиляции, если пытаюсь запустить импорт с именем папки верхнего уровня. Итак, предположим, что мой проект выглядит следующим образом:
+ myproject
- __init__.py
- a.py
- b.py
+ package1
- c.py
- __init__.py
+ package2
- d.py
- e.py
- __init__.py
Если я в файле a.py, он не позволит мне сделать импорт, как это, например:
from myproject.b import foo
import myproject.b
То же самое происходит для любого файла. Они все компилировать просто отлично, если я уйду от «MyProject» из оператора импорта, как это:
from b import foo
import b
Так же, как на рисунке, у меня определенно есть верхний уровень __init__.py, и как папка MyProject и ее parent находятся на пути Python. Папка myproject также является исходной папкой для проекта.
Мне нужен полный оператор импорта, потому что места, где я развертываю этот код, не будут иметь папку myproject на своем пути. Некоторые другие проекты, которые, похоже, настроены одинаково, не имеют этой проблемы, и я пробовал обычную чистку/перезапуск.
Любая идея относительно того, что здесь происходит?
Спасибо!
Если места вы deply код, чтобы сделать не иметь папку MyProject на их пути, ' import myproject.b' не удастся. – BrenBarn
Вы действительно получаете ошибку компиляции? Python не заботится о том, существуют ли во время компиляции модули, ссылки на которые вы ссылаетесь, и даже не компилируете свой код до тех пор, пока вы его не запустите. Если это 'ImportError', это не ошибка компиляции. – user2357112
Да, я неправильно. Это 'ИмпортError'. – piyo