ImportError при попытке импортировать пользовательский модуль в Python - PullRequest
8 голосов
/ 04 мая 2011

Обратите внимание, что я искал SO для этой ошибки, и хотя было много похожих вопросов, я не нашел ни одного, который касался этой конкретной проблемы.

Я работаю над Pythonмодуль, который выглядит следующим образом:

/com
    /company
        /foo
        /bar

Я редактирую исходный файл в каталоге bar и пытаюсь импортировать классы, которые находятся в каталоге foo.Я попытался импортировать файлы следующими способами:

from com.company.foo import *
from company.foo import *
from foo import *
import com.company.foo
import company.foo
import foo

Каждый из них выдает похожую ошибку:

ImportError: no module named com.company.foo

У меня есть __init__.py файлов в каждом из каталогов, в том числекаталог, содержащий com.

Не уверен, что я тут не так делаю - заранее спасибо за помощь!

Ответы [ 2 ]

5 голосов
/ 04 мая 2011

Каталог, содержащий /com, должен находиться в пути Python. Есть несколько способов сделать это:

  1. В командной строке каждый раз: user@host:~$ PYTHONPATH=/path/to/whatever python some_file.py

  2. В вашей конфигурации оболочки (.bashrc, .bash_profile и т. Д.): export PYTHONPATH=/path/to/whatever

  3. В коде Python (я не рекомендую это, как общая практика): import sys sys.path.append('/path/to/whatever')

Как говорили некоторые из комментаторов, обычно это обрабатывается либо контейнером (mod_wsgi и т. Д.), Либо вашим скриптом начальной загрузки / main (который может выполнять что-то вроде опции № 3, либо может вызываться в наборе окружения). как в вариантах № 1 или № 2)

0 голосов
/ 04 мая 2011

думаю, что это из .foo import * По крайней мере, в 2,7 и выше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...