«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) 
  • Не удалось прочитать файл csv, загруженный в ведро Google Cloud Storage
  • Как настроить скорость и направление ветра (U, V) на графике графика в Python?
  • как ноутбук jupyter обрабатывает вызовы quit ()?
  • Возможно ли перенаправить вывод ячейки в jupyter
  • Jupyter Notebook: выходное изображение в предыдущей строке
  • использование памяти списка в ipython и jupyter
  • Переменный проводник в ноутбуке Jupyter
  • Jupyter conda tab «Ошибка при получении информации о пакете».
  • Как отлаживать умирающее ядро ​​Jupyter Python3?
  • Ядро IR, умирающее со свежей установкой Jupyter
  • Выход ноутбука Jupyter в уценке
  •  
    Interesting Posts for Van-Lav

    Scrapy view возвращает пустую страницу

    Python2.6 Десятичное число до восьмого

    Создание миниатюры видео с источника видео в python

    Есть ли лучший способ конвертировать список в словарь в Python с ключами, но нет значений?

    Что такое синтаксис для вставки одного списка в другой список в python?

    Как исправить нос Python: охват недоступен: невозможно импортировать модуль покрытия

    Преобразование pandas DataFrame в вложенный dict

    Скрининг Ajax на основе обзорной страницы с помощью Scrapy

    Как удалить промежутки между стержнями в гистограмме Matplotlib

    После записи в файл, почему os.path.getsize все еще возвращает предыдущий размер?

    Ошибка HTTP 404 из googlefinance в python 2.7

    Как правильно вызвать методы базового класса (и конструктор) из унаследованных классов в Python?

    Код для Greatest Common Divisor в Python

    Почему объект string кэшируется в python

    Программирование на Python для абсолютного новичка – Livewires не работает

    Python - лучший язык программирования в мире.