Уведомления

Группа в Telegram: @pythonsu

#1 Март 13, 2015 20:12:56

Yana
От: Мурманск
Зарегистрирован: 2015-03-07
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

PyCharm и импорт модулей

Добрый день, уважаемые программисты.
Работаю в PyCarm.
Не знаю, в чём проблема, в нём или во мне, но среда не желает видеть модули. Даже если используемый модуль лежит в той же папке, что и тот, который хочу импортировать.

НО при этом обнаружилась интересная особенность: если перенести тот модуль, который я хочу импортировать, в другую папку, то PyCharm сразу его видит и я могу его импортировать.

Сказать, что неудобно, это ничего не сказать .
Это вообще нормально? Так должно быть или это уже проблема? Если второй вариант, то как же решить эту самую проблему?
Заранее спасибо за ответ!

Офлайн

#2 Март 13, 2015 20:19:09

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

PyCharm и импорт модулей

покажи структуру папок, когда не видит
лучше со скриншотом



Офлайн

#3 Март 13, 2015 20:28:24

Yana
От: Мурманск
Зарегистрирован: 2015-03-07
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

PyCharm и импорт модулей



Есть 2 папки :
1) Прочие задачи
2)в ней “подпапка” Специалист

Используемый модуль в папке 1)
Импортируемый в папке 2)

(Здесь они уже не в одной и той же папке лежат)

Офлайн

#4 Март 13, 2015 21:37:43

Rebra4
Зарегистрирован: 2012-06-30
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

PyCharm и импорт модулей

может проблема с русскими названиями папок
и где ваши __init__ файлы

Офлайн

#5 Март 13, 2015 23:18:10

alex925
Зарегистрирован: 2015-01-08
Сообщения: 204
Репутация: +  14  -
Профиль   Отправить e-mail  

PyCharm и импорт модулей

Во 1 отвыкай называй папки проектов по русски, все только латиницей и ни каких пробелов, во 2 почитай про импорт модулей у Лутца.

Офлайн

#6 Март 13, 2015 23:39:16

Yana
От: Мурманск
Зарегистрирован: 2015-03-07
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

PyCharm и импорт модулей

Спасибо за помощь!

Офлайн

#7 Март 14, 2015 00:02:32

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9934
Репутация: +  856  -
Профиль   Отправить e-mail  

PyCharm и импорт модулей

Yana
то PyCharm сразу его видит и я могу его импортировать
PyCharm не сам смотрит, а обращается к интерпретатору питона. А интерпретатор даёт импортировать только из тех мест, которые указаны в sys.path. В sys.path есть также пустой путь, означающий текущую директорию. Никаких проходов из текущей во вложенные директории не происходит.



Офлайн

#8 Март 14, 2015 09:57:17

Yana
От: Мурманск
Зарегистрирован: 2015-03-07
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

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):

Офлайн

#9 Март 14, 2015 11:34:23

alex925
Зарегистрирован: 2015-01-08
Сообщения: 204
Репутация: +  14  -
Профиль   Отправить e-mail  

PyCharm и импорт модулей

Ну судя по твоему коду, у тебя класс Document вообще ничего не определяет. Посмотри на каком уровне ты пишешь методы класса Document и его атрибуты (ну точнее пытаешься писать).

Офлайн

#10 Март 14, 2015 12:31:54

Yana
От: Мурманск
Зарегистрирован: 2015-03-07
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

PyCharm и импорт модулей

Вот весь код.
Я не понимаю, что за уровни. Отступы вы имеете в виду или что?

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')

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version