2016-02-22 8 views
3

Я пытаюсь импортировать модуль, и я продолжаю получать ImportError.«ImportError: No module named ...» при импорте моего собственного модуля

В файле PortfolioStatus.py у меня есть следующий код, который импортирует класс share_data из модуля share_data.py
from Shares.share_data import share_data

я получаю следующее сообщение об ошибке:

File "/home/lucasamos/FYP/Shares/Communication/PortfolioStatus.py", line 3, in <module> 
from Shares.share_data import share_data 
ImportError: No module named Shares.share_data 

Чтобы сделать вещи более запутанное это прекрасно работает на моей локальной машине, но я размещаю на PythonAnywhere, и именно здесь я получаю ошибку

Моя иерархия файлов отображается в изображение ниже

File hierarchy

Спасибо заранее!

+0

Что рабочая директория в вашей конфигурации запуска? Это будет добавлено в 'sys.path'. Если вы создадите каталог проекта (оставив его пустым), «Акции» должны быть импортируемыми. –

+0

Ознакомьтесь с [подробным руководством по отладке sys.path и проблемами импорта в PythonAnywhere] (https://help.pythonanywhere.com/pages/DebuggingImportError) – hwjp

ответ

6

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

В конце концов, это то, что я сделал:

import sys 
sys.path.append("/home/lucasamos/FYP") 
+0

hooray! для кого-либо другого с аналогичными проблемами есть [подробное руководство по sys.path и импорт ошибок на pythonanywhere] (http://help.pythonanywhere.com/pages/DebuggingImportError) в документах – hwjp

8

вы должны попробовать это:

import sys 
sys.path.append("../Shares/templates") 
import share_data 

Он добавляет папку шаблонов в список пути питона проверяет наличие модулей.

+0

Файл 'share_data.py' не находится в папке шаблонов, это в папке «Акции». Я просто добавил «Акции» на путь, но это не сработало :( –

+0

Неплохо, я пропускаю закрытую папку. Попробуйте добавить полный путь вместо относительного пути, например «/ home/YourName/PycharmProjects/FYP/Акции « – CoMartel

+0

Вам нужно добавить содержащийся каталог, а не сам пакет. –

0

Возможно, это связано с тем, что каталог ваших акций не находится в вашем PYTHONPATH.

Смотрите эту статью об использовании PYTHONPATH: https://users-cs.au.dk/chili/PBI/pythonpath.html

Выдержки:

Often however, you will need to import a module not located in the same directory as the main program. Continuing the example above, assume you're writing a program located in ~/PBI/ which needs to include mymodule.py.

In order for the Python interpreter to find your module, you need to tell it where to look. You can do that by setting the environment variable PYTHONPATH. Depending on the shell program you use (e.g., xterm), this is done in one of two ways.

Bash:

export PYTHONPATH=${PYTHONPATH}:/users/[your username]/PBI/Modules/

+0

При добавлении внешних ссылок (которые в какой-то момент в будущем могут быть нарушены), также можно отредактировать соответствующую часть в вашем ответе. – nestedloop

2

Добавить пустой __init__.py на одном уровне с manage.py файла.

Такое включение файла __init__.py указывает интерпретатору Python, что каталог следует рассматривать как пакет Python.

+0

Вы имели в виду? manage.py'?Это не сработало :( –

+0

Может быть, хороший ответ, если бы он содержал какой-то контекст? –

+0

@ MattO'Brien благодарит за ваш комментарий, я бы добавил несколько объяснений для этого ответа. Хороший день) –