2015-09-11 6 views
1

У меня есть два файла Python, один из которых хранится в местоположении /Python/plata.py, а другой - в местоположении /Python/tao/mock.py. Это то, что мой plata.py файл выглядит следующим образом ::ValueError: Попытка относительного импорта в non-package

def printSomething(): 
    print 'This is a test.' 

Я пытаюсь импортировать функцию printSomething() внутри моего mock.py файла следующим образом:

from . import plata 

plata.printSomething() 

Однако это ошибка, я встречая :

Traceback (most recent call last): 
File "/home/manas/Python/tao/mock.py", line 1, in <module> 
from . import plata 
ValueError: Attempted relative import in non-package 

Я включил __init__.py файлы в местах /Python/__init__.py и /Python/tao/__init__.py. Тем не менее, я все еще сталкиваюсь с той же ошибкой.

Что здесь, кажется, неправильно?

+0

Вы используете 'mock.py' напрямую (в отличие от импорта из другого места)? – BrenBarn

+0

@BrenBarn Я запускаю его напрямую. –

ответ

3

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

import sys 
sys.path.append('..') 

import plata 

Надеюсь, это вам поможет!

0

См. What's the difference between a Python module and a Python package? для объяснения модуля и пакета. Короче говоря, ваш каталог Python не является пакетом. plata.py является автономным модулем и должен быть импортирован как import plata.

+0

Связанная причина этого дублирования по-прежнему не объясняет, почему добавление случайных файлов '__init __. Py' не является ответом. 'tao' - это пакет,' plata' - это модуль. Мой связанный ответ - настоящая причина, почему это не работает. –

Смежные вопросы