Python - импортировать все из папки - PullRequest
0 голосов
/ 03 мая 2020

Я python новичок (пару лет занятий и экспериментальная жизнь), возвращаюсь для личного проекта.

Я хочу импортировать все из папки, я хочу весь код, который я добавить в папку для импорта на мою главную. После исследования я предпринял эту попытку, помещенную в main:

from os.path import dirname, basename, isfile, join
import glob
import importlib
modules = glob.glob(join(dirname(__file__), "*.py"))
allMods = [ basename(f)[:-3] for f in modules if isfile(f) and not f.endswith('__init__.py') and not f.endswith("main.py")]

for i in range(0, len(allMods)):
    importlib.import_module(allMods[i])

'allMods' содержит все имена файлов в массиве, - ["a", "b", "et c "] - именно поэтому я использую для l oop до go через каждый из них и пытаюсь импортировать их - пример: importlib.import_module (" a ") На данный момент ошибок нет, поэтому что-то работает, но при попытке связаться с a.py, b.py, et c .py они просто не определены ("неразрешенная ссылка").

До этого я попробовал все от стандартного импорта до дикого кода в _ _ init _ _.py, я даже добрался до 2-й страницы Google.

Это явно слишком продвинуто для моего текущего навыка (методом проб и ошибок я учиться лучше). Итак, является ли это решение неправильным с самого начала, или есть что-нибудь пригодное для спасения?

Спасибо.

EDIT_1: По сути, я хочу иметь возможность импортировать все, что я добавляю в папку динамически, а не жестко закодировать команды импорта.

Ответы [ 2 ]

0 голосов
/ 03 мая 2020
from subfolder import filename #no __init__.py necessary
filename.function()

Это один из способов сделать это. Это вводит в заблуждение топи c в python и зависит от деталей того, как именно вы хотите настроить свой проект, поэтому в вашем вопросе фактически отсутствует какая-то конкретная c информация об этом.

0 голосов
/ 03 мая 2020

Я думаю, что вы можете сделать

from . import *

, но я не уверен,

...