Найти - Пользователи
Полная версия: PyCharm и импорт модулей
Начало » Python для новичков » PyCharm и импорт модулей
1 2 3
Yana
Добрый день, уважаемые программисты.
Работаю в PyCarm.
Не знаю, в чём проблема, в нём или во мне, но среда не желает видеть модули. Даже если используемый модуль лежит в той же папке, что и тот, который хочу импортировать.

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

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


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

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

(Здесь они уже не в одной и той же папке лежат)
Rebra4
может проблема с русскими названиями папок
и где ваши __init__ файлы
alex925
Во 1 отвыкай называй папки проектов по русски, все только латиницей и ни каких пробелов, во 2 почитай про импорт модулей у Лутца.
Yana
Спасибо за помощь!
py.user.next
Yana
то PyCharm сразу его видит и я могу его импортировать
PyCharm не сам смотрит, а обращается к интерпретатору питона. А интерпретатор даёт импортировать только из тех мест, которые указаны в sys.path. В sys.path есть также пустой путь, означающий текущую директорию. Никаких проходов из текущей во вложенные директории не происходит.
Yana
Напишу сразу тут. Подскажите пожалуйста.
Я пытаюсь смотреть уроки от Специалиста.
Там пишется программа про Документ, про Накладные и прочее.
В уроках написанная программа работает, у меня же нет.
Вот кусок кода.

Атрибут 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):
alex925
Ну судя по твоему коду, у тебя класс Document вообще ничего не определяет. Посмотри на каком уровне ты пишешь методы класса Document и его атрибуты (ну точнее пытаешься писать).
Yana
Вот весь код.
Я не понимаю, что за уровни. Отступы вы имеете в виду или что?

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