Из этого поста:
Python: отключение относительного импорта
указано, что относительный импорт можно отключить с помощью:
from __future__ import absolute_import
Однако это правило, похоже, нельзя распространить на блокнот Jupyter.Вот быстрый эксперимент, когда я создаю файл python, имя которого совпадает с именем пакета python (в данном случае networkx).Это может привести к сбою полного импорта этого пакета.Ниже приведен снимок экрана, описывающий этот случай:
Установленный пакет 'network' уже содержит подмодуль 'drawing', но импорт завершился неудачно сследующее сообщение:
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-2-e38c4f8fc4a0> in <module>
1 from __future__ import absolute_import
2
----> 3 from networkx import drawing
ImportError: cannot import name 'drawing'
Как это исправить в блокноте Jupyter или в лаборатории Jupyter?Означает ли это, что я не могу избежать относительного импорта?
ОБНОВЛЕНИЕ : большое спасибо за ответы, один из них - предложить мне испорченный PYTHONPATH (или sys.путь), это не тот случай, я добавил следующую строку, чтобы показать несоответствие PYTHONPATH и пути разрешенного модуля:
from __future__ import absolute_import
import os
import sys
for p in sys.path:
print(p)
print("=================")
import networkx
print(os.path.abspath(networkx.__file__))
from networkx import drawing
результат:
> /home/shared/anaconda3/lib/python36.zip
> /home/shared/anaconda3/lib/python3.6
> /home/shared/anaconda3/lib/python3.6/lib-dynload
> /home/peng/.local/lib/python3.6/site-packages
> /home/shared/anaconda3/lib/python3.6/site-packages
> /home/shared/anaconda3/lib/python3.6/site-packages/IPython/extensions
> /home/peng/.ipython
> ================= /home/peng/git/convnet-abstraction/slide/package/networkx.py
> --------------------------------------------------------------------------- ImportError Traceback (most recent call
> last) <ipython-input-4-d28ac292787c> in <module>
> 12 print(os.path.abspath(networkx.__file__))
> 13
> ---> 14 from networkx import drawing
>
> ImportError: cannot import name 'drawing'
Вот еще один скриншот: