2015-08-10 3 views
1

У меня есть папка, которая содержит две отдельные папки, один из которых содержит некоторые питона модули, а другой держит сценарий питона, который использует эти модули:Импорт модулей из разных папок (питон)

parentFolder/ 
    lib/ 
     __init__.py 
     readFile.py 
     writeFile.py 
    folder/ 
     run.py 

Файл __init__.py пуст. В run.py я следующее:

from ..lib import readFile 

data = readFile('file.dat') 

Это дает мне ошибку

Traceback (most recent call last): 
    File "run.py", line 1, in <module> 
    from ..lib import readFile 
ValueError: Attempted relative import in non-package 

Что мне не хватает?

+0

Вы уже пробовали какие-то намеки от [этих] (http://stackoverflow.com/questions/72852/how-to-do-relative-imports-in-python) ответов? –

+0

@ MichałGóral Я попытался выполнить 'python -m run.py', который не работал. – sodiumnitrate

ответ

0

Вам необходимо добавить __init__.py файлы (могут быть пустыми) в каждый из каталогов, чтобы сделать их пакетом. См. documentation для более подробной информации.

+0

Какие каталоги вы имеете в виду? – sodiumnitrate

+0

В обе каталоги, которые еще не имеют их, то есть «parentFolder» и «folder». Это необходимо, чтобы сообщить Python, что каталоги на самом деле являются пакетами кода ([documentation] (https://docs.python.org/2/tutorial/modules.html#packages)) – plamut

+0

Зачем нужна папка? 'run.py' не будет импортироваться ничем. – sodiumnitrate

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