Форум сайта python.su
Добрый день, уважаемые программисты.
Работаю в PyCarm.
Не знаю, в чём проблема, в нём или во мне, но среда не желает видеть модули. Даже если используемый модуль лежит в той же папке, что и тот, который хочу импортировать.
НО при этом обнаружилась интересная особенность: если перенести тот модуль, который я хочу импортировать, в другую папку, то PyCharm сразу его видит и я могу его импортировать.
Сказать, что неудобно, это ничего не сказать .
Это вообще нормально? Так должно быть или это уже проблема? Если второй вариант, то как же решить эту самую проблему?
Заранее спасибо за ответ!
Офлайн
покажи структуру папок, когда не видит
лучше со скриншотом
Офлайн
Есть 2 папки :
1) Прочие задачи
2)в ней “подпапка” Специалист
Используемый модуль в папке 1)
Импортируемый в папке 2)
(Здесь они уже не в одной и той же папке лежат)
Офлайн
может проблема с русскими названиями папок
и где ваши __init__ файлы
Офлайн
Во 1 отвыкай называй папки проектов по русски, все только латиницей и ни каких пробелов, во 2 почитай про импорт модулей у Лутца.
Офлайн
Спасибо за помощь!
Офлайн
YanaPyCharm не сам смотрит, а обращается к интерпретатору питона. А интерпретатор даёт импортировать только из тех мест, которые указаны в sys.path. В sys.path есть также пустой путь, означающий текущую директорию. Никаких проходов из текущей во вложенные директории не происходит.
то PyCharm сразу его видит и я могу его импортировать
Офлайн
Напишу сразу тут. Подскажите пожалуйста.
Я пытаюсь смотреть уроки от Специалиста.
Там пишется программа про Документ, про Накладные и прочее.
В уроках написанная программа работает, у меня же нет.
Вот кусок кода.
Атрибут new получает своё значение позже (внутри класса) , чем я к нему обращаюсь в методе create (до объявления класса) .
Выдаёт ошибку AttributeError: type object ‘Document’ has no attribute ‘new’
(хотя в уроках написано точно так же, и всё работает)
Не пойму, что же я сделала не так. Который день сижу.
Хотела разобраться сама, но не смогла. Подскажите пожалуйста.
def create(): ''' Создание нового документа ''' return Document(status = Document.new) # New Задаётся до момента создания, # но важнее, когда она не создана, а когда будет вызвана def load(id): ''' Загружка существующего документа из БД ''' doc = Document(id) doc.restore() return doc class Document(object): ''' Документ ''' new = 1 # статус документа "новый" status_allowed = [new] # перечисления статусов документа def __init__(self, id = None, status = None, **kwargs):
Офлайн
Ну судя по твоему коду, у тебя класс Document вообще ничего не определяет. Посмотри на каком уровне ты пишешь методы класса Document и его атрибуты (ну точнее пытаешься писать).
Офлайн
Вот весь код.
Я не понимаю, что за уровни. Отступы вы имеете в виду или что?
def create(): ''' Создание нового документа ''' return Document(status = Document.new) # New Задаётся до момента создания, # но важнее, когда она не создана, а когда будет вызвана def load(id): ''' Загружка существующего документа из БД ''' doc = Document(id) doc.restore() return doc class Document(object): ''' Документ ''' new = 1 # статус документа "новый" status_allowed = [new] # перечисления статусов документа def __init__(self, id = None, status = None, **kwargs): if id !=None: self.__id = int(id) if status!= None: if status in Document.status_allowed: raise ValueError # Если статус не входит в список допустимых статусов self.__status = status # Если входит, то задаём введенный статус id = property( lambda self: self.__id) # Создние свойства id , но просто другим образом @property def _id(self): # Возвращает ID накладной try: return self.id except AttributeError: return None @property def status(self): # Статус документа (черновик, подписанный и прочее) return self.__status @property def _status(self): try: return self.status except AttributeError: return None def save(self): #Сохранение pass def restore(self): #Восстановление pass D = create() print('Статус документа',D.status) try: print('ID докуента',D.id) except: AttributeError print('None ID') D = load(1) try: print('Статус документа',D.status) except AttributeError: print('None') try: print('ID докуента',D.id) except: AttributeError print('None ID')
Офлайн