Я пытаюсь импортировать пакет, присутствующий в другой папке, и он отлично работает в python 3.4. Для примера: файлы присутствуют в папке библиотекРазница между импортирующим модулем в Python 3.4 и Python 2.7
user> python
Python 3.4.1 (default, Nov 12 2014, 13:34:29)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from libraries.controller_utils import *
>>>
Однако, когда я открываю новую оболочку и использовать Python 2.7:
user> python
Python 2.7.4 (default, Jun 1 2015, 10:35:58)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-55)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from libraries.controller_utils import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named libraries.controller_utils
>>>
Я попытался добавить запись в sys.path
, но это не помогает. Я прочитал аналогичный вопрос here, но решение не помогает мне, поскольку я пробовал как относительный, так и абсолютный импорт. Пожалуйста посоветуй.
EDIT: Структура каталогов ~/tests/libraries/controller_utils.py
. Я выполняю эти команды внутри каталога тестов.
EDIT: Я добавил запись sys.path следующим образом, но она все еще не распознает ее. Обратите внимание, что ошибка происходит на 2.7, но работает абсолютно нормально на 3,4
user> cd ~/tests/
user> ls
__pycache__ backups inputs libraries openflow.py test_flow.py
user> ls libraries/
__pycache__ controller_utils.py general_utils.py general_utils.pyc tc_name_list.py test_case_utils.py
user> python
Python 2.7.4 (default, Jun 1 2015, 10:35:58)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-55)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from libraries.controller_utils import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named libraries.controller_utils
>>> import sys
>>> sys.path.append('libraries/')
>>> from libraries.controller_utils import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named libraries.controller_utils
Какова структура каталогов для модуля, который вы импортируете? в каком каталоге вы используете python? –
Какую «запись» вы добавили в 'sys.path' (и как вы ее добавили?)? Как правило, с относительными проблемами импорта, я ожидаю, что вы найдете модуль на python2.x, а не на python3.x ... – mgilson
Неверный способ изменения 'sys.path'. если вы добавите 'libraries /' в 'sys.path', то вы должны использовать' from controller_utils import * 'not' from libraries.constroller_utils import * '. – Bakuriu