Как добавить модуль Python в syspath?

Привет, у меня есть такая файловая структура

Folder
   Common
      foo1.py
   TestFolder
      foo2.py

Я хочу импортировать в foo2.py foo1.py. Я пытался, но это не работает на Ubuntu:

sys.path.append(os.path.abspath('../../'))
from Common import foo1.py
70
задан 23 May 2014 в 11:28

3 ответа

Как Python находит свои модули

Строго взятый, модуль является единственным файлом Python, в то время как пакет является папкой, содержащей файлы Python, сопровождаемый (может быть пустым), названный файл __init__.py, для сообщения Python, это - пакет для импорта модулей из. В обоих случаях модулям нужен их .py расширение, но импорт их обходится без (см. далее ниже).

По умолчанию Python ищет свои модули и пакеты в $PYTHONPATH.

Для обнаружения, что включено в $PYTHONPATH, выполняет следующий код в Python (3):

import sys
print(sys.path)

Как добавить каталог

Иногда

Из файла Python можно иногда добавлять путь (пути) к пути по умолчанию путем добавления следующих строк в главном разделе приложения Python или сценария:

import sys
sys.path.insert(0, "/path/to/your/package_or_module")

Например:

если у меня есть папка: /home/myname/pythonfiles, и я хочу импортировать файл module_1.py, расположенный в том каталоге, я добавляю это к главному разделу моего кода:

import sys
sys.path.insert(0, "/home/myname/pythonfiles")

И я могу просто импортировать файл module_1.py :

import module_1

Когда я создаю пакет и хочу импортировать модуль (модули) из пакета, я должен создать папку в $PYTHONPATH, содержа модули, сопровождаемые (может быть пустым), названный файл __init__.py

Например:

Импортировать из пакета названная (папка) my_package в /home/myname/pythonfiles , добавьте /home/myname/pythonfiles соедините каналом к Вашему $PYTHONPATH, как в примере 1, и импорт названный модуль module_2.py (в папке пакета) просто с:'

from <packagename> import module_2

Добавление каталогов к $PYTHONPATH постоянно:

Добавьте следующую строку к Вашему ~/.profile файл.

export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add

Подкаталоги

Из пакета подкаталоги не включены точно так же, как это; необходимо "объединить каталоги в цепочку". Импортировать модуль module_3.py, в папке subfolder в папке packagename:

import packagename.subfolder.module_3

Учитывая тот факт, что все подпапки в пакете включают свое собственное __init__.py файл.

Когда модуль находится в том же каталоге как сценарий или приложение

Нет никакой потребности вставить путь к модулю, когда это находится в том же каталоге как сценарий или приложение, он автоматически добавляется.

Пример:

Если у меня есть папка, содержа script.py и module.py, Я могу просто импортировать модуль:

import module
116
ответ дан 23 May 2014 в 11:28

Корректный способ использовать относительный импорт:

from ..Common import foo1

И Вам также нужно __init__.py во всех Ваших папках.

0
ответ дан 23 May 2014 в 11:28

NB: Этот ответ устарел для последней версии python 3, но здесь для более ранней версии. Для получения дополнительной информации читайте комментарии и https://www.python.org/dev/peps/pep-0420 /

<час>

По существу каждый папка с кодом Python, который Вы хотите добавить к потребностям syspath __ init __. файл py. Они __ init __. файлы py могут быть пустыми.

0
ответ дан 23 May 2014 в 11:28

Другие вопросы по тегам:

Похожие вопросы: