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)
пробовал:
импортировать pandas и действвать через него`
проверять, есть ли в той же папке файл с называнием pandas.py - такого файла у меня в папке нет
удалять, сносить, обновлять питон и 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 шт):
Я не знаю, почему это так, но проблему я решил вот как: я перенёс 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 файлы как то этому мешают
А просто внимательнее надо быть. Смотрите:
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)
Всегда означает, что вы назвали какой-то свой файл именем стандартной библиотеки. Только обычно цепочка короче, а тут получилось, что ваш файл подключился не прямо сразу от вашего импорта, а через импорт в стандартной библиотеке, которую вы подключили.
Ну и ошибка в данном случае немного сбивает с толку. Она тут "наведённая" и не указывает на точное место проблемы. Но вроде бы в самых свежих версиях питона это дело немного пофиксили и там должно лучше указывать на проблемное место.