Как jupyter notebook импортирует модули, которых нет в текущем рабочем каталоге? - PullRequest
2 голосов
/ 31 марта 2019

Я пытаюсь понять, как работает импорт в ноутбуке Jupyter.Мой текущий рабочий каталог - "home / username".У меня есть три модуля Python.

Путь этих модулей приведен ниже.

  1. "/home/username/module1.py"
  2. "/home/username/folder/module2.py"
  3. "/home/username/anaconda3/lib/python3.7/os.py" (чтовстроенный Python-модуль*

    ячейка 3: import os Работает просто отлично

    Кажется, что модули в рабочем каталоге можно импортировать без проблем.Итак, module1.py можно импортировать.Модули в других каталогах, которые не являются пакетами, не могут быть импортированы напрямую.Итак, module2.py выдает ошибку.Но если это так, как напрямую импортировать os.py, который не является рабочим каталогом или находится в другом пакете в том же каталоге?

Ответы [ 2 ]

1 голос
/ 31 марта 2019

Это действительно больше о том, как работает сам Python.

Вы сможете импортировать module2 с from folder import module2.Вы должны объявить /home/username/folder как пакет, создав пустой файл инициализации /home/username/folder/__init__py.Я рекомендую назвать пакет более уникальным, например, potrus_folder, чтобы не допустить конфликтов имен.

Чтобы объяснить: Python отслеживает, какие модули доступны через его путь, онобычно устанавливается в ваших переменных окружения.Чтобы увидеть, какие папки он ищет для модулей, вы можете сделать import sys затем print(sys.path).По умолчанию ваш рабочий каталог (/home/username/) будет включен с наивысшим приоритетом (таким образом, он должен быть первым или последним в sys.path, я не помню).Вы можете добавить свою собственную папку с помощью sys.path.append('/some/folder'), хотя она не одобряется, и вам действительно следует добавить ее в системный путь или просто сохранить в виде пакета в рабочем каталоге.

Пакеты на самом деле простоподпапки путей, которые уже были добавлены.Вы получаете к ним доступ, как я объяснил ранее, используя синтаксис from X import Y или, если хотите углубиться from X.Z import Y.Запомните файл __init__.py.

0 голосов
/ 31 марта 2019

Путь библиотеки ОС задается в среде * Всякий раз, когда вы даете импорт, он будет искать все каталоги, которые добавлены в вашей среде + pwd, так что вы можете просто добавить каталог в среде, и это будет работать

По умолчанию /home/username/anaconda3/lib/python3.7/ добавляется по умолчанию во время установки, так как там, где находится большая часть модуля, но вы также можете добавить urs

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