2013-06-27 9 views
1

Я сбивал с толку отличие Python 3 от Python 2 от импорта.Ошибка импорта Python3

Если у меня есть такой каталог, как это ...

module_test/ -> 
    a/hello.py 
    lib/mad.py 

И я хочу, чтобы импортировать модуль привет из Lib/mad.py

Так что я написал такой код ..

Библиотека/mad.py

import a.hello 

И я называю питон Lib/mad.py, но это случилось ImportError.

Я не знаю, почему так получилось.

У вас есть идея? Я хочу решить этот вопрос.

Образец репозитория - https://github.com/okamurayasuyuki/module_test/tree/master/lib. ##Заранее спасибо.

+0

Похоже, что каталог 'a' может быть не на вашем Pythonpath. Отправьте свой точный стек или вы не получите больше полезной помощи. –

ответ

2

Ваша проблема заключается в том, что, запустив mad.py из каталога module_test, вы предположили, что Python будет использовать ваш текущий каталог в качестве базы для поиска модуля b. Для того, чтобы доказать, что он не работает, выполните следующие действия:

  1. Редактировать свой mad.py скрипт и добавьте следующие строки в самом начало сценария:

    import sys 
    print(sys.path) 
    exit() 
    

    Это будет просто напечатать путь поиска Python использует для поиска модули, которые вы пытаетесь импортировать, а затем выходите.

  2. Откройте терминал, перейдите в папку /module_test и выполнить следующую команду:

    > python lib/mad.py 
    

    Теперь вы должны увидеть путь сбрасывали к терминалу. Обратите внимание, что первая запись в списке - это папка 'module_test/lib', а не 'module_test', как вы могли подумать.

Итак, как вы решаете проблему?

Прост: вам просто нужно указать Python правильную директорию, которую он должен использовать, чтобы искать ваши модули. Чтобы сделать это, необходимо установить переменную Enviroment PYTHONPATH:

> export PYTHONPATH=$PYTHONPATH:/path/to/module_test 

Теперь, если вы попытаетесь запустить скрипт, он должен импортировать a.hello, как и ожидалось!


PS: Вы должны прочитать официальный учебник Python, специально в главе 6, который объясняет концепцию модулей и пакетов:

http://docs.python.org/3/tutorial/modules.html

Это должно дать вам основную understading и поможет вам решить ваши проблема.

+0

Спасибо за ваш ответ! Оно работает. – nobinobiru