Ошибка атрибута для сетевых интерфейсов

#python #manjaro #arch

#python #манджаро #arch

Вопрос:

Я использую полностью обновленную установку Manjaro (по состоянию на 15.08.2020). Для этого проекта используется python 3.8.3.

Я хотел бы использовать модуль python netifaces для определения IP-адреса одного из моих сетевых интерфейсов. Я пытался установить модуль как через pip ( sudo pip install netifaces ), так и через pacman ( sudo pacman -S python-netifaces ). Оба выдают мне netifaces версии 0.10.9. Однако, когда я запускаю

 import netifaces
interfaces = netifaces.interfaces()
print(interfaces)
  

Я получаю следующее сообщение об ошибке:

 ---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-1-e0d29647271f> in <module>
      1 import netifaces
----> 2 interfaces = netifaces.interfaces()

AttributeError: module 'netifaces' has no attribute 'interfaces'
  

Когда я затем проверяю dir(netifaces) , я получаю

 ['__builtins__',
 '__cached__',
 '__doc__',
 '__file__',
 '__loader__',
 '__name__',
 '__package__',
 '__spec__']
  

Однако он отлично работает с python 2.7.18, где возвращает список моих сетевых интерфейсов, как и ожидалось.

Он также отлично работает в моей установке openSUSE Leap 15.1. Для этого используются python 3.6.10 и сетевые интерфейсы 0.10.9.

Кажется, я не могу найти никаких похожих проблем, не говоря уже об их решениях при поиске. Буду признателен за любую помощь.

Комментарии:

1. У вас есть собственный файл с именем «netifaces.py «? (попробуйте print(netifaces.__file__) после его импорта.)

2. Нет файла с именем netifaces.py в каталоге. print(netifaces.__file__) ВОЗВРАТ /home/[USER]/.cache/Python-Eggs/netifaces-0.10.9-py3.8-linux-x86_64.egg-tmp/netifaces.cpython-38-x86_64-linux-gnu.so . Однако это кажется странным расположением для пакета python, если я удалю ~/.cache /Python-Eggs, это не изменит расположение файла.