Как касаться модули .py из подпапок папок

Я искал в сети: каков лучший способ импортировать модули в Пайтоне? и я находился эти три:

  • Изменяя PYTHONPATH.
  • Добавляя каталог с sys.append("/ruta_directorio").
  • С файлом .pth.

Моя структура - следующая:

project
├── carpeta1
│  ├── __init__.py
│  ├── archivo.py
│  ├── archivo2.py
│  └── subcarpeta1
│  ├── __init__.py
│  └── archivo3.py
└── main.py

Вопрос состоит в том, что я нуждаюсь в том, чтобы импортировать что-то archivo.py в archivo3.py. Так carpeta1 как carpeta2 у них есть файл __init__.py.

Кто-то мог бы показывать меня, какова процедура для этого?.

Обновление (подробно опиши)

Так carpeta1 как carpeta2 у них есть файл init.py.

6
задан 16.12.2015, 22:52
4 ответа

Если ты в archivo3.py и ты хочешь импортировать что-то archivo.py только ты нуждаешься:

from carpeta1.archivo import foo

Так как каталог главного рукописного шрифта (main.py) эта в PYTHONPATH по умолчанию не необходимо изменять это. Только иметь значение как ты бы это сделал с main.py.

8
ответ дан 24.11.2019, 15:06

Предполагая, что ты выполняешь main.py, ты не нуждаешься в том, чтобы ничего не изменить. У тебя есть две возможности: используя imports абсолютные или imports относительные.

from carpeta1 import archivo  # absoluto
import ..archivo  # relativo

Я только что подтвердил это:

$ python -V
Python 3.5.0 :: Continuum Analytics, Inc.
$ cat main.py 
from carpeta1.subcarpeta1.archivo3 import VERSION_REL, VERSION_ABS
print(VERSION_REL, VERSION_ABS)
$ cat carpeta1/archivo.py 
VERSION = 2.0
$ cat carpeta1/subcarpeta1/archivo3.py 
from ..archivo import VERSION as VERSION_REL
from carpeta1.archivo import VERSION as VERSION_ABS
$ python main.py 
2.0 2.0
3
ответ дан 24.11.2019, 15:06

Только ты должен помещать раньше ссылку на модуль, что ты будешь использовать следующие способы:

  • Все то, у что есть Модуль

    from Modulo import *

    или

    import Modulo

  • Если ты будешь импортировать только функцию, ты можешь использовать

    from Modulo import function

Если они не в том же пакете, ты должен предшествовать имя пакета согласно твоей иерархии.

1
ответ дан 24.11.2019, 15:06

Это видео 3hs, которое объясняет все то, что ты нуждаешься в том, чтобы узнать на, как обрабатывать информацию с пакетами https://www.youtube.com/watch? v=0oTh1CXRaQ0

0
ответ дан 24.11.2019, 15:06