Главная » Ошибки » Python “No Module Named” Import Error

Python “No Module Named” Import Error

What does this Error mean?

As the name implies, this error occurs when Python is unable to locate a module that you have tried importing. And as expected of the Python interpreter, it immediately returns an exception, ModuleNotFoundError and shuts the program down.

So why was Python unable to find this module? Let’s assume you were trying to import this library called fly. You used the import fly statement, but of course, since no module called fly exists, the following error was thrown.

Traceback (most recent call last):
File “C:UsersCodersLegacyDesktopscript.py”, line 1, in
import fly
ModuleNotFoundError: No module named ‘fly’

We’ll now proceed to examine every possible scenario in which this error can occur and how to fix it.

Library not installed

This is by far the most common reason. You’ve tried to import a library that you saw someone use in a YouTube tutorial, but the problem here is that Python does not come with all these libraries pre-installed and downloaded. Only a certain number of libraries, known as the Standard library can be imported directly. Popular examples of such libraries are DateTime and Tkinter.

So what do you do now? Well, you head over to the command prompt, navigate to your Python installation and use the Python package installer pip to download the library of your choice. It’s a very simple command, pip install .

Since I have the path to my Python.exe added to the list of default paths, I don’t have to manually navigate to it. If you were confused about any step in this process, head over to the Python setup guide where it’s discussed in detail.

Making sure you’re in the correct directory is of utmost importance. Most people make this mistake and simply try to call the pip install from the default location on the command prompt. You must first navigate to the folder with your Python.exe and then call the command. If you don’t know how to navigate the command prompt, you’ll have to look it up.

Multiple Python Installations

One issue that can complicate things is if you have multiple Python installations on your computer. And this is easily possible. As I’m writing this, I currently have two Python installations myself (accidentally of course). The first I happened to download when I was setting up Visual Studio, which would serve as my IDE for Python for a good while. My Python.exe file path looks something like this.

C://Program Files/Microsoft Visual Studio/Python37

Now, every time I download a library, it’s installed in the above folder. As a result only the python.exe in this folder can access those libraries. The second Python installation of mine was done through the regular method, and is stored elsewhere. As a result, it cannot access the libraries installed with the first Python installation.

Now how is this relevant to this article? Well, if you have multiple python installations, there’s a good chance you’ve gotten confused between the two and are importing the library from the wrong place. If this is the case, before rushing over to google this error, make sure that the library is installed at the Python installation you’re currently using.

Incorrect Library name

While extremely unlikely, there is a chance you messed up the library names. I know for fact that sometimes the actual name of a library and the name used to install the library can be a bit different.

For instance the popular web scrapper library BeautifulSoup is installed and imported with the name bs4. Some people may try to download or import it using the name BeautifulSoup, and that would return an error.

There’s a simple to find the name through which a library is imported. Do a google search like Python numpy and click on the first tutorial for it. 9 times out of 10 there will be a small section at the top where they mention how to install the library.

Install Requests in Windows

In the case of windows, you can use pip or pip3 based on the Python version you have to install the requests module.

$ pip3 install requests

If you have not added the pip to the environment variable path , you can run the below command in Python 3, which will install the requests module. 

$ py -m pip install requestsTotal0Shares0Share0Tweet0Share0Share0Share

Sign Up for Our Newsletters

Subscribe to get notified of the latest articles. We will never spam you. Be a part of our ever-growing community.

SubscribeBy checking this box, you confirm that you have read and are agreeing to our terms of use regarding the storage of the data submitted through this form.

How to rename columns in Pandas DataFrame

  • August 20, 2022

Table of Contents Hide Method 1: Rename Specific column names in Pandas DataFrameMethod 2: Rename all column names in Pandas DataFrameMethod 3: Replace specific characters in Columns of Pandas DataFrame… View Post

  • Django
  • Python
  • 2 minute read

<хедер class="entry-хедер">

Ошибки с фразой «AttributeError: ‘NoneType’ object has no attribute»

Ошибки, в которых присутствует слово AttributeError, NoneType, object has no attribute обычно вызваны не отсутствием модуля, а тем, что модуль не получил ожидаемого аргумента, либо получил неправильное число аргументов. Было бы правильнее сказать, что ошибка вызвана недостаточной проверкой данных и отсутствием перехвата исключений (то есть программа плохо написана).

В этих случаях обычно ничего не требуется дополнительно устанавливать. В моей практике частыми случаями таких ошибок является обращение программы к определённому сайту, но сайт может быть недоступен, либо API ключ больше недействителен, либо программа не получила ожидаемые данные по другим причинам. Также программа может обращаться к другой программе, но из-за ошибки в ней получит не тот результат, который ожидала, и уже это вызывает приведённые выше ошибки, которые мы видим.

Опять же, хорошо написанная программа в этом случае должна вернуть что-то вроде «информация не загружена», «работа программы N завершилась ошибкой» и так далее. Как правило, нужно разбираться с причиной самой первой проблемы или обращаться к разработчику.

Пакет Python установлен, но программа его не видит

Причина может быть в том, что вы установили модуль для другой версии. Например, программа написана на Python3, а вы установили модуль с этим же названием, но написанный на Python2. В этом случае он не будет существовать для программы. Поэтому нужно правильно указывать номер версии.

Команда pip также имеет свои две версии: pip2 и pip3. Если версия не указана, то это означает, что используется какая-то из двух указанных (2 или 3) версий, которая является основной в системе. Например, сейчас в Debian и производных по умолчанию основной версией Python является вторая. Поэтому в репозитории есть два пакета: python-pip (вторая версия) и python3-pip (третья).

В Arch Linux и производных по умолчанию основной версией является третья, поэтому в репозиториях присутствует пакет python-pip (третья версия) и python2-pip (вторая).

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

4. The module is unsupported

When a library releases a new update, new modules are added, and others are dropped to support it.

If you try to import a module that is n unsupported by the library, you will get ModuleNotFoundError: No module named.

To ensure the module is supported, go to the package documentation and check if the module is available or not.

2. The path of the module is incorrect

The Second reason is the path of the local module you want to import is incorrect. for example, let’s see a directory structure 

Project structure:

core.py
folder_1
—my_module.py

In this folder, we’ve:

  • core.py: is the file that will execute
  • folder_1: folder contains my_module.py

Now in core.py, let’s try to import my_module.py

core.py

import my_module #incorrect

Output:

ModuleNotFoundError: No module named ‘my_module’

As you can see, we got the error because my_module.py is not in the path that we’ve executed core.py. We need to define the module’s path in the following example to solve the error.

core.py

import folder_1.my_module #correct

Output:

…Program finished with exit code 0

Now we’ve imported m_module successfully.

Конфликт зависимостей модулей Python

Иногда может существовать конфликт модулей Python, который и приводит к ошибке No module named.

Следующее сообщение явно указывает, что _numpy_compat.py в библиотеке scipy пытается импортировать модуль numpy.testing.nosetester.

Traceback (most recent call last):
File “C:demo-projectvenv
Libsite-packages
scipy_lib_numpy_compat.py”, line 10, in
from numpy.testing.nosetester import import_nose
ModuleNotFoundError: No module named ‘numpy.testing.nosetester’

Ошибка ModuleNotFoundError возникает из-за того, что модуль numpy.testing.nosetester удален из библиотеки в версии 1.18. Для решения этой проблемы нужно обновить numpy и scipy до последних версий.

pip install numpy –upgrade
pip install scipy –upgrade

5. Python 2 instead of Python 3

As you know, Some Python libraries no longer support Python 2. For that reason, you’ll get the ModuleNotFoundError error if you execute a module that does not support Python 2 with Python 2.

To solve the error:

First, let’s check our python version using these two commands:

python -V
# Python 2.7.18

python3 -V
# Python 3.9.5

In my case, Python 3 is on the python3 command, So I will execute the program using python3. If Python3 is not found on your device, Install Python on Windows, Mac, and Linux.

How to enable CORS on Django REST Framework?

  • March 31, 2022

 If we are building an API layer using the Django REST framework and accessing these APIs in the front-end application we need to enable the CORS on Django Rest Framework… View Post

  • Python
  • Pandas
  • 4 minute read

<хедер class="entry-хедер">

Adding new column to existing DataFrame in Pandas

  • August 20, 2022

Table of Contents Hide Method 1: Declare and assign a new list as a columnMethod 2: Using the DataFrame.insert() methodMethod 3: Using the DataFrame.assign() methodMethod 4: Using the pandas.concat() methodMethod… View Post

  • Python
  • Built-In Methods
  • 1 minute read

<хедер class="entry-хедер">

Install Requests in OSX/Linux

The recommended way to install the requests module is using pip or pip3 for Python3 if you have pip installed already.

Using Python 2

$ sudo pip install requests 

Using Python 3

$ sudo pip3 install requests 

Alternatively, if you have easy_install in your system, you can install requests using the below command.

Using easy install

$ sudo easy_install -U requests

For CentOs

$ yum install python-requests

For Ubuntu

To install requests module on Debian/Ubuntu for Python2:

$ sudo apt-get install python-requests

And for Python3, the command is:

$ sudo apt-get install python3-requests

Конфликт имен библиотеки и модуля

Еще одна причина ошибки No module named — конфликт в названиях пакета и модуля. Предположим, есть следующая структура проекта Python:

demo-project
└───utils
__init__.py
string_utils.py
utils.py

Если использовать следующую инструкцию импорта файла utils.py, то Python вернет ошибку ModuleNotFoundError.

Use a different BrowserСкопированоКопировать
>>> import utils.string_utils
Traceback (most recent call last):
File “C:demo-projectutilsutils.py”, line 1, in
import utils.string_utils
ModuleNotFoundError: No module named ‘utils.string_utils’;
‘utils’ is not a package

В сообщении об ошибке сказано, что «utils is not a package». utils — это имя пакета, но это также и имя модуля. Это приводит к конфликту, когда имя модуля перекрывает имя пакета/библиотеки. Для его разрешения нужно переименовать файл utils.py.

Установлена новая версия модуля, но программа видит старую версию

Я несколько раз сталкивался с подобными необъяснимыми ошибками.

Иногда помогает удаление модуля командой вида:

sudo pip2 uninstall модуль

Также попробуйте удалить его используя системный менеджер пакетов.

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

Если проблема не решена, то удалите все файлы модуля, обычно они расположены в папках вида:

  • /usr/lib/python2.7/site-packages/модуль
  • /usr/lib/python3.7/site-packages/модуль

3. The library is not installed

Also, you can get the ModuleNotFoundError: No module named issue if you are trying to import a library module that is not installed in your virtual environment or computer.

So before importing a library’s module, you need to install it with any package-management system.

Note: pip is recommended.

For example, let’s try to import the Beautifulsoup4 library that’s not installed in my virtual environment.

>>> from bs4 import BeautifulSoup
Traceback (most recent call last):
File ““, line 1, in
ModuleNotFoundError: No module named ‘bs4’

Now, let’s install the library and try to re-import it:

pip install beautifulsoup4
Collecting beautifulsoup4
Using cached https://files.pythonhosted.org/packages/d1/41/e6495bd7d3781cee623ce23ea6ac73282a373088fcd0ddc809a047b18eae/beautifulsoup4-4.9.3-py3-none-any.whl
Requirement already satisfied: soupsieve>1.2; python_version >= “3.0” in /home/py/Desktop/seo_pro/seo_env/lib/python3.6/site-packages (from beautifulsoup4) (1.9.5)
Installing collected packages: beautifulsoup4
Successfully installed beautifulsoup4-4.9.3

Re-importing:

>>> from bs4 import BeautifulSoup
>>>

As you can see, after installing the package, the program is working.

Python divmod()

  • August 20, 2022

Table of Contents Hide divmod() Syntax divmod() Parametersdivmod() Return ValueExample: How divmod() works in Python?Errors And Exceptions  The divmod() in Python is a built-in function that takes two numbers as input… View Post

  • Python
  • Built-In Methods
  • 2 minute read

<хедер class="entry-хедер">

Источники

  • https://coderslegacy.com/python-no-module-named-import-error/
  • https://itsmycode.com/importerror-no-module-named-requests/
  • https://ZaLinux.ru/?p=1960
  • https://pytutorial.com/how-to-solve-modulenotfounderror-no-module-named-in-python
  • https://PythonRu.com/baza-znanij/no-module-named
[свернуть]
Решите Вашу проблему!


×
Adblock
detector