Как организовать модули в пакет, когда модули зависят друг от друга? - PullRequest
0 голосов
/ 23 октября 2018

Мне нужно организовать свой код в пакет, но я не могу правильно обрабатывать операторы импорта из-за взаимозависимостей между различными функциями.Ниже показано, как выглядит мой код, и я запускаю его в блокноте Jupyter.Но это становится длинным, и мне нужно организовать его лучше.

import sys
import numpy as np

def Class myClass():
    ...

def f1():
    ...
    call myClass()

import tkinter as tk
from tkinter import filedialog
def f2():
    ....

def f3():
    ...
    call f2

some scripts

import pptx
def f4():
    ....

def f5():
    call f2 & f4
    ....
some more scripts....

and so on (more functions)

Мне нравится создавать пакет, в котором каждый из модулей .py содержит разные определения классов и функций, основанные на некоторыхлогика.Например, все функции, которые обрабатывают манипуляции с файлами, помещаются в файл files.py, а все функции построения графиков - в файл plots.py и т. Д.:

mypackage/
    __init__.py
    files.py
    data.py
    analysis.py
    plots.py

Я создал указанную выше структуру каталогов и разместил другой наборфункции в каждом из этих модулей.Вот где я застрял.

  1. Где разместить все операторы импорта?
  2. Предположим, что myClass находится в files.py, а f1 - в data.py, а f1 использует экземпляр myClass.Где я могу разместить оператор "from files import myClass?"
  3. Как вы можете видеть в моем примере, f2 используется в f3: где / что я скажу об импорте f2, чтобы f3 мог получить доступ к f2?
  4. Если я открою интерпретатор Python3, сначала я импортирую mypackage, а затем импортирую каждую из этих функций из каждого из модулей в mypackage?
  5. Если функция, скажем, f1 (постояннов files.py), вызывается внутри другой функции, например, f2 (постоянно находится в data.py), нужно ли мне импортировать и файлы.f1, и данные.f2 в моем основном коде, или я могу просто сказать «импортировать файлы.f1»"внутри модуля data.py перед def f2 (): оператор?

Я читал об относительном импорте модулей, который, я думаю, имеет отношение к тому, что я делаю, но я все еще в замешательстве.Если бы кто-то мог помочь мне лучше понять это, я был бы очень признателен.Я прошел через Как написать модуль / пакет Python? и https://docs.python.org/3/tutorial/modules.html,, но не смог решить мою проблему после их прочтения.

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