Найти - Пользователи
Полная версия: Импорт модуля из каталога выше
Начало » Python для новичков » Импорт модуля из каталога выше
1 2
MetalHead
Добрый день. Имеется такая структура:
- Приложение:
— База данных(каталог):
—– actions(каталог):
——– edit.py
—– models.py

Так вот задача такая: импортировать определенные классы и объекты из файла models.py находясь в файле edit.py
Спасибо.
FishHook
Делайте свои каталоги пакетами и импортируйте из пакетов.
MetalHead
FishHook
Значит создал в каталогах пустые __init__.py, но пишет что-нет такого модуля. Пробую импортировать
import database.models
ImportError: No module named 'database'
FishHook
конечно, его же нет в sys.path
если вы правильно сделали структуру пакета, должно работать так
from .database import models
MetalHead
FishHook
извиняюсь за глупые вопросы, еще по библиотеке sys не практиковался, да и приложение таким образом не “компановал”. У меня оба __init__.py пустые как написано по вашей ссылке.
Вызываю из edit.py
>>> from .database import models
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    from .database import models
SystemError: Parent module '' not loaded, cannot perform relative import
Я так понимаю в каком-то из __init__.py пути(sys.path) нужно прописать, как Вы сказали. Направьте пожалуйста.
Пробую в database/__init__.py
import sys
sys.path.insert(1, '/actions/')
FishHook
Не видя кода трудно что-то советовать. Выкладывайте сюда архив с программой.
MetalHead
database/models.py
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey
class BaseClass:
    def __init__(self):
        self.baseDeclarative = declarative_base()
        self.baseEngine = create_engine('sqlite:///shop.db')
declarativeObject = BaseClass()
class Goods(declarativeObject.baseDeclarative):
    __tablename__ = 'goods'
    id = Column(Integer, primary_key = True)
    name = Column(String(250))
    model = Column(String(250))
    purchase = Column(Integer)
    price = Column(Integer)
    presence = Column(Integer)
    sale = Column(Integer)
    red_presence = Column(Integer, default=3)
    last_sale_date = Column(Integer)
    last_import = Column(Integer)
    alphabet = Column(String(10))
if __name__ == "__main__":
    declarativeObject.baseDeclarative.metadata.create_all(declarativeObject.baseEngine)
database/actions/edit.py
from models import declarativeObject as model
from models import Goods
from sqlalchemy.orm import sessionmaker
class InitQueries:
    def __init__(self):
        model.baseDeclarative.metadata.bind = model.baseEngine
        dbSession = sessionmaker(bind=model.baseEngine)
        self.session = dbSession()
init = InitQueries()
class GoodsAction:
    def select(self, ident=None, alphabet=None):
        try:
            if ident == None and alphabet == None:
                rows = init.session.query(Goods).filter(Goods.alphabet == "А").all()
                return rows
            if ident == None and alphabet != None:
                rows = init.session.query(Goods).filter(Goods.alphabet == alphabet).all()
                return rows
            if ident != None:
                row = init.session.query(Goods).filter(Goods.id == ident).one()
                return row
        except:
            return "Ошибка выборки"
            pass
    def add(self, name, model, purchase, price, presence, sale, red_presence, last_import, alphabet):
        try:
            addRow = Goods(name=name, model=model, purchase=purchase,
                           price=price,presence=presence, sale=sale,
                           red_presence=red_presence, last_import=last_import,
                           alphabet=alphabet)
            
            init.session.add(addRow)
            init.session.commit()
            print ("Добавлено")
        except:
            return "Ошибка добавления записи"
if __name__ == "__main__":
    goods = GoodsAction()
З.Ы. как писал выше, __init__.py в каталогах пустые.
FishHook
Вы не понимаете, что важна структура проекта? Если бы мне нужны были ваши функции и классы, я бы так и сказал: покажите код. Я прошу весь проект в виде архива.
MetalHead
FishHook
пожалуйста
FishHook
Как то так
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB