#python #python-3.x #jupyter-notebook
Вопрос:
При попытке импортировать модуль я получаю ошибку импорта «не удалось импортировать модуль».
Структура файла
src
modules
__init__.py
authenticate_developer
twttier_importer
notebooks
main.ipynb
unit_tests
test_authenticate_developer
В test_authenticate_developer
import requests
from nose.tools import assert_true
import os
import sys
sys.path.append(os.path.abspath('../modules'))
import settings
import twitter_importer #returns import error
import authenticate_developer #returns import error
Однако, когда я использую тот же синтаксис в своих записных книжках, это успешно.
import sys
import os
sys.path.append(os.path.abspath('../modules'))
sys.path.append(os.path.abspath('../'))
import twitter_importer
import authenticate_developer
import settings
Я просмотрел существующие ответы и опробовал их, т. Е. удалил init.py из корневой папки и удаление или добавление init.py в папку «тесты». Кажется, ни один из них не работает на меня.
Комментарии:
1. Пожалуйста, опубликуйте код в виде текста, а не изображений. Это облегчает нам повторение проблемы.
2. @Sid спасибо за отзыв. Я отредактировал с помощью текста
Ответ №1:
Мне удалось найти кого-нибудь, кто помог бы мне с этим, и вот как мы с этим справились.
src
modules
__init__.py
authenticate_developer
twttier_importer
notebooks
main.ipynb
unit_tests
__init__.py
test_authenticate_developer
В test_authenticate_developer
import os,sys,inspect
sys.path.append(os.path.abspath('../modules'))
#This is to access the parent folder in order to import config
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
sys.path.insert(0,parentdir)
import config
from modules.authenticate_developer import Authenticate
Я не могу объяснить, почему я должен делать это по-другому в тестовых файлах, но это моя работа