2015-07-17 4 views
0

У меня есть несколько модулей в моем проекте и укажите некоторую точку выполнения. Но когда я пытаюсь импортировать файлы из подмодулей, это не работает.Как импортировать подмодули из относительного пути?

Итак, как указать подмодули для выполнения из выбранного исполняемого файла?

project 
--bin 
---- executeFile 
--modules 
---- __init__.py 
----fileA.py 

в executeFile, я стараюсь:

from ..modules.fileA import * 

но получаю ошибку:

Traceback (most recent call last): 
File "./bin/muexecute", line 10, in <module> 
    from ..modules.os import * 
SystemError: Parent module '' not loaded, cannot perform relative import 
+0

вы пробовали из modules.os импортировать *? –

+0

Да, но получите ошибку: ImportError: Нет модуля с именем 'modules'. Насколько я понимаю из документации, bin и модули - это разные каталоги модулей, поэтому мне нужна некоторая точка входа или \ и взломать, чтобы это могло быть – user2995099

ответ

0

Я нашел решение. Проблема была, на мой взгляд, в использовании init .py. я поместил в исполняемом пути сценария к включению и он работает отлично

PACKAGE_PARENT = '..' 
SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), os.path.expanduser(__file__)))) 
sys.path.append(os.path.normpath(os.path.join(SCRIPT_DIR, PACKAGE_PARENT))) 
0

Все модули, которые вы хотите импортировать должны в вашей PYTHONPATH. Поэтому нет иерархии. В вашем случае Мне кажется, что в основной папке вашего проекта отсутствует __init__.py (со всеми включенными моделями), поэтому файл execute не знает о ваших модулях.

+0

Это не работает. Я уже пробовал это – user2995099

+0

Что? PYTHONPATH один или '__init __. Py' один? – Gabor

0

У вас возникли проблемы с определением вашего относительного пути, правильно? Попробуйте выполнить следующее:

from sys import path 
path.append('C:\\realative_path') 
from function_file import required_function 

Надеюсь, что это поможет.