2016-02-25 2 views
1

Извините, что задал свой вопрос 2-го раза, но я полностью застрял в import file в python.Лучший подход к использованию скрипта внутри вложенного каталога PYTHONPATH

У меня есть структура каталогов ниже:

|--test/foo.py 
|--library #This is my PYTHONPATH 
|--|--script1.py 
|--|--library_1 
|--|--|--script2.py 
|--|--library_2 
|--|--library_3 

я доступ library/library_1/script2.py от test/foo.py.

Здесь я смущен тем, что является лучшим подходом. Как правило, все папки библиотек или служебные функции должны быть добавлены к pythonpath.

Это структура папок, которую я поддерживаю, чтобы различать функции утилиты и тестовые скрипты.

Я пытался ставить __init__.py в библиотеке и Library1 & затем импортируемые как from library1 import script2, но получаю сообщение об ошибке, как No module named script.

Я попытался добавить этот путь к системному пути.

Работа: если я добавлю еще pythonpath, как path/to/library/libray_1/. Так что я должен делать это для всех папок, находящихся внутри папки library, чтобы заставить ее работать?

ответ

0

Вот что вам нужно сделать:

|--test/foo.py 
|--library #This is my PYTHONPATH 
|--__init__.py 
|--|--script1.py 
|--|--library_1 
|--|--|--__init__.py 
|--|--|--script2.py 
|--|--library_2 
|--|--|--__init__.py 
|--|--library_3 
|--|--|--__init__.py 

А внутри первой __init__.py ниже библиотеки вам нужно сделать:

import library1 
import library2 
import script 

Тогда, если library ваш питон путь, вы можете сделать это в пределах test/foo.py без ошибок:

import library 
library.library1.bar() 
library.script.foo() 
Смежные вопросы