pandas: чтение excel-файла вызывает ошибку

Я пытаюсь прочитать Excel (*.xlsx) файл, взяв пример из интернета:

import pandas 
file_name = 'C:/Users/User1/Progs/example.xlsx'
excel_file = pandas.ExcelFile(file_name)

Получаю ошибку

C:\Users\User1\Progs>python re.py
Traceback (most recent call last):
  File "C:\Users\User1\Progs\re.py", line 1, in <module>
    import pandas
    ^^^^^^^^^^^^^
  File "C:\Users\User1\AppData\Roaming\Python\Python312\site-packages\pandas\__init__.py", line 26, in <module>
    __import__(_dependency)
  File "C:\Users\User1\AppData\Roaming\Python\Python312\site-packages\numpy\__init__.py", line 125, in <module>
    from numpy.__config__ import show_config
  File "C:\Users\User1\AppData\Roaming\Python\Python312\site-packages\numpy\__config__.py", line 4, in <module>
    from numpy._core._multiarray_umath import (
  File "C:\Users\User1\AppData\Roaming\Python\Python312\site-packages\numpy\_core\__init__.py", line 74, in <module>
    from . import (
  File "C:\Users\User1\AppData\Roaming\Python\Python312\site-packages\numpy\_core\_machar.py", line 11, in <module>
    from .fromnumeric import any
  File "C:\Users\User1\AppData\Roaming\Python\Python312\site-packages\numpy\_core\fromnumeric.py", line 11, in <module>
    from . import _methods, overrides
  File "C:\Users\User1\AppData\Roaming\Python\Python312\site-packages\numpy\_core\_methods.py", line 7, in <module>
    import pickle
  File "C:\Program Files\Python312\Lib\pickle.py", line 34, in <module>
    import re
  File "C:\Users\User1\Progs\re.py", line 6, in <module>
    excel_file = pandas.ExcelFile(file_name)
                 ^^^^^^^^^^^^^^^^
AttributeError: partially initialized module 'pandas' has no attribute 'ExcelFile' (most likely due to a circular import)

пробовал:

  1. импортировать pandas и действвать через него`

  2. проверять, есть ли в той же папке файл с называнием pandas.py - такого файла у меня в папке нет

  3. удалять, сносить, обновлять питон и pip до последних версий, ставить зависимости: numpy и openpyxl, чтобы читать именно *.xlsx - файлы

Ошибка не меняется: при попытке что-нибудь вызвать из pandas - я получаю аналогичное сообщение.
Дополнение.
я запускаю другой файл в той же папке:

import pandas as pd

# Загружаем файл Excel в DataFrame
file_path = 'example.xlsx'  # Укажите путь к вашему файлу Excel
df = pd.read_excel(file_path)

# Получаем количество строк
num_rows = len(df.index)

print(f"В файле {file_path} содержится {num_rows} строк.")

И получаю ту же самую ошибку.

Ошибка:

C:\Users\User1\Progs>python t0.py
Traceback (most recent call last):
  File "C:\Users\User1\Progs\t0.py", line 1, in <module>
    import pandas as pd
  File "C:\Users\User1\AppData\Roaming\Python\Python312\site-packages\pandas\__init__.py", line 26, in <module>
    __import__(_dependency)
  File "C:\Users\User1\AppData\Roaming\Python\Python312\site-packages\numpy\__init__.py", line 125, in <module>
    from numpy.__config__ import show_config
  File "C:\Users\User1\AppData\Roaming\Python\Python312\site-packages\numpy\__config__.py", line 4, in <module>
    from numpy._core._multiarray_umath import (
  File "C:\Users\User1\AppData\Roaming\Python\Python312\site-packages\numpy\_core\__init__.py", line 74, in <module>
    from . import (
  File "C:\Users\User1\AppData\Roaming\Python\Python312\site-packages\numpy\_core\_machar.py", line 11, in <module>
    from .fromnumeric import any
  File "C:\Users\User1\AppData\Roaming\Python\Python312\site-packages\numpy\_core\fromnumeric.py", line 11, in <module>
    from . import _methods, overrides
  File "C:\Users\User1\AppData\Roaming\Python\Python312\site-packages\numpy\_core\_methods.py", line 7, in <module>
    import pickle
  File "C:\Program Files\Python312\Lib\pickle.py", line 34, in <module>
    import re
  File "C:\Users\User1\Progs\re.py", line 6, in <module>
    excel_file = pandas.ExcelFile(file_name)
                 ^^^^^^^^^^^^^^^^
AttributeError: partially initialized module 'pandas' has no attribute 'ExcelFile' (most likely due to a circular import)

А у меня в файле, который я запускал, вообще нет функции ExcelFile, там есть функция pd.read_excel(), но на неё python не ругается.

Может, я запускаю как то не так?


Ответы (2 шт):

Автор решения: S.H.

Я не знаю, почему это так, но проблему я решил вот как: я перенёс python-файл в отдельную папку.

Когда рядом с ним нет других python - файлов - этот пример

import pandas as pd

# Загружаем файл Excel в DataFrame
file_path = 'example.xlsx'  # Укажите путь к вашему файлу Excel
df = pd.read_excel(file_path)

# Получаем количество строк
num_rows = len(df.index)

print(f"В файле {file_path} содержится {num_rows} строк.")

работает!

Видимо, я не до конца понимаю, как работает import в питоне, и окружающие *.py файлы как то этому мешают

→ Ссылка
Автор решения: CrazyElf

А просто внимательнее надо быть. Смотрите:

  File "C:\Program Files\Python312\Lib\pickle.py", line 34, in <module>
    import re
  File "C:\Users\User1\Progs\re.py", line 6, in <module>

Видите, какой файл подключается когда библиотека pickle делает import re? Подключается ваш файл, лежащий в том же каталоге, что и скрипт, в котором вы подключаете pandas: "C:\Users\User1\Progs\re.py".

Так что вы были близки к разгадке, но проблема была не в вашем файле pandas.py, которого у вас нет, а в вашем файле re.py, который тоже совпадает по названию со стандартной библиотекой re.

Обычно ошибка вида:

AttributeError: partially initialized module '...' has no attribute '...' 
(most likely due to a circular import)

Всегда означает, что вы назвали какой-то свой файл именем стандартной библиотеки. Только обычно цепочка короче, а тут получилось, что ваш файл подключился не прямо сразу от вашего импорта, а через импорт в стандартной библиотеке, которую вы подключили.

Ну и ошибка в данном случае немного сбивает с толку. Она тут "наведённая" и не указывает на точное место проблемы. Но вроде бы в самых свежих версиях питона это дело немного пофиксили и там должно лучше указывать на проблемное место.

→ Ссылка