«ImportError: No module named» при попытке запустить скрипт Python

Я пытаюсь запустить скрипт, который запускает, среди прочего, скрипт python. Я получаю ImportError: No module named …, однако, если я запускаю ipython и импортирую тот же модуль таким же образом через интерпретатор, модуль принимается.

Что происходит, и как я могу это исправить? Я попытался понять, как Python использует PYTHONPATH, но я полностью смущен. Любая помощь была бы весьма признательна.

11 Solutions collect form web for “«ImportError: No module named» при попытке запустить скрипт Python”

Эта проблема возникает из-за того, как интерпретатор IPython командной строки использует ваш текущий путь против того, как выполняется отдельный процесс (будь то ноутбук IPython, внешний процесс и т. Д.). IPython будет искать модули для импорта, которые не только находятся в вашем sys.path, но и в вашем текущем рабочем каталоге. При запуске интерпретатора из командной строки текущий каталог, в котором вы работаете, является тем же, с которого вы запустили ipython. Если вы запустите

 import os os.getcwd() 

вы увидите, что это правда.

Однако предположим, что вы используете ноутбук ipython, запустите os.getcwd() и ваш текущий рабочий каталог – это папка, в которой вы сказали, что ноутбук работает в вашем файле ipython_notebook_config.py (обычно с помощью c.NotebookManager.notebook_dir ).

Решение состоит в том, чтобы предоставить интерпретатору python путь к вашему модулю. Самое простое решение – добавить этот путь к вашему списку sys.path. В своем ноутбуке сначала попробуйте:

 import sys sys.path.append('my/path/to/module/folder') import module-of-interest 

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

Лучший (и более постоянный) способ решить это – установить PYTHONPATH , который предоставляет интерпретатору дополнительные каталоги для пакетов / модулей python. Редактирование или настройка PYTHONPATH в качестве глобального var зависит от ОС и подробно обсуждается здесь для Unix или Windows .

Просто создайте пустой файл python с именем «__init__.py» в папке с указанием ошибки при запуске проекта python.

Убедитесь, что они оба используют один и тот же интерпретатор. Это случилось со мной на Ubuntu:

 $ ipython3 > sys.version '3.4.2 (default, Jun 19 2015, 11:34:49) \n[GCC 4.9.1]' $ python3 > sys.version '3.3.0 (default, Nov 27 2012, 12:11:06) \n[GCC 4.6.3]' 

И sys.path отличался между двумя интерпретаторами. Чтобы исправить это, я удалил Python 3.3.

Основная причина заключается в том, что sys.paths Python и IPython различны.

Пожалуйста, обратитесь к ссылке lucypark , решение работает в моем случае. Это происходит при установке opencv на

conda install opencv

И получил ошибку импорта в iPython. Для решения этой проблемы есть три шага:

 import cv2 ImportError: ... 

1. Проверьте путь в Python и iPython с помощью следующей команды

 import sys sys.path 

Вы должны найти, что они разные. Второй шаг, просто используйте sys.path.append чтобы исправить пропущенный путь с помощью try-and-error.

2. Временное решение

В iPython:

 import sys sys.path.append('/home/osboxes/miniconda2/lib/python2.7/site-packages') import cv2 

ImportError:..

3. Постоянное решение

Создайте профиль iPython и установите начальное добавление:

В оболочке bash:

 ipython profile create ... CHECK the path prompted , and edit the prompted config file like my case vi /home/osboxes/.ipython/profile_default/ipython_kernel_config.py 

В vi добавьте файл:

 c.InteractiveShellApp.exec_lines = [ 'import sys; sys.path.append("/home/osboxes/miniconda2/lib/python2.7/site-packages")' ] 

СДЕЛАННЫЙ

Перед установкой ipython я установил модули через easy_install; скажем, sudo easy_install mechanize .

После установки ipython мне пришлось повторно запустить easy_install для ipython для распознавания модулей.

Выполнение sys.path.append('my-path-to-module-folder') будет работать, но чтобы избежать необходимости делать это в IPython каждый раз, когда вы хотите использовать модуль, вы можете добавить export PYTHONPATH="my-path-to-module-folder:$PYTHONPATH" в файл ~/.bash_profile .

Имел подобную проблему, исправил ее, вызывая python3 вместо python , мои модули были в Python3.5.

удалите pathlib и переустановите его.

Удалите папку pathlib в папке sitepackages и переустановите пакет pathlib с помощью команды pip.

pip install pathlib

Я нашел еще один источник этого несоответствия:

У меня ipython установлен как локально, так и обычно в virtualenvs. Моя проблема заключалась в том, что внутри вновь созданного virtualenv с ipython была подобрана система ipython, которая была другой версией, чем python и ipython в virtualenv (2.7.x против 3.5.x), и веселье последовало.

Я думаю, что умная вещь, которую нужно делать при установке чего-то, что будет иметь двоичный файл в yourvirtualenv/bin – это немедленно запустить rehash или аналогичную для любой оболочки, которую вы используете, чтобы получить правильный питон / ipython. (Обязательно проверьте, есть ли подходящие крючки после установки …)

Если вы запускаете его из командной строки, иногда интерпретатор python не знает пути поиска модулей.

Ниже представлена ​​структура каталогов моего проекта:

 /project/apps/.. /project/tests/.. 

Я бежал ниже команды:

 >> cd project >> python tests/my_test.py 

После запуска над командой я получил ошибку ниже

 no module named lib 

lib был импортирован в my_test.py

я напечатал sys.path и понял, что путь проекта, над которым я работаю, недоступен в списке sys.path

Я добавил код ниже в начале моего скрипта my_test.py .

 import sys import os module_path = os.path.abspath(os.getcwd()) if module_path not in sys.path: sys.path.append(module_path) 

Я не уверен, что это хороший способ решить это, но да, это помогло мне.

Вот как я это исправил:

 import os import sys module_path = os.path.abspath(os.getcwd() + '\\..') if module_path not in sys.path: sys.path.append(module_path) 
  • Как сделать встроенные графики в Jupyter Notebook больше?
  • ImportError: Нет модуля с именем IPython.path при запуске jupyter notebook?
  • Невозможно импортировать модули в ноутбук jupyter; неправильный sys.path
  • Синхронизация кода между сценарием ноутбука jupyter / iPython и методами класса
  • Изображение Nuidia Theano docker недоступно
  • Matplotlib и Ipython-notebook: отображение точно того, что будет сохранено
  • В jupyter ноутбуке нет терминала python
  • Как выполнить python-ноутбук внутри другого в google cloud datalab
  • Python - лучший язык программирования в мире.