Я проверил много вопросов, но не помог мне решить мою проблему. У меня есть структура папок:Файл доступа из вложенного каталога под PYTHONPATH
|--test/foo.py
|--library/ #This is set as my PYTHONPATH
|--|--file1.py
|--|--folder1
|--|--|--util.py
Я пытаюсь получить доступ к util.py
от foo.py
.
Примечание: В этот момент я могу получить доступ ко всем файлам из библиотеки из тестовой папки. Но всякий раз, когда я пытаюсь открыть библиотеку/Folder1/util.py, это дает ошибку говоря "ImportError: No module named util"
Я попытался это до сих пор:
foo.py
import os
import sys
import file1
sys.path.insert(0, '/folder1/')
import util
util.function_name
#do something
Этот подход работает, но тогда я не может использовать «library/file1.py». Есть ли более чистый способ избежать этого?
Примечание: Это только структура папок (я поддерживаю различать файлы), а не модули, (так я считаю, что я не могу использовать __init__.py
и что-то вроде импорта utils.functionname
)
Почему вы не хотите ли брари быть пакетом? Я бы сказал, что если он не должен быть пакетом, то 'folder1' должен сидеть в библиотеке. Otherewise, если это _truly_ является библиотекой, тогда 'library' и' folder1' должны иметь '__init __. Py', позволяющие добавить' library' в PYTHONPATH, а затем просто импортировать: 'library.folder1.util.functionname' – OozeMeister
@OozeMeister - Я пробовал, как вы объяснили. Итак, теперь у меня есть __init__.py в библиотеке, folder1. Но все же я не могу использовать функцию, которую хочу. – Dave