Python3.7: ошибка ModuleNotFoundError: Никакой модуль под названием 'PBKDF2', который установлен с pip3

Я работаю на Ubuntu 19.10. Я установил Python pbkdf2 с

pip3 install pbkdf2

использование pip3 show параметр I видит, что установлен.

$pip3 show pbkdf2
Name: pbkdf2
Version: 1.3
Summary: PKCS#5 v2.0 PBKDF2 Module
Home-page: http://www.dlitz.net/software/python-pbkdf2/
Author: Dwayne C. Litzenberger
Author-email: dlitz@dlitz.net
License: UNKNOWN
Location: /home/xyz/.local/lib/python3.7/site-packages
Requires: 
Required-by:

Попытка выполнить этот простой код;

import base64
from Crypto.Cipher import AES
from pbkdf2 import PBKDF2

salt = 16 * b'\0'
key = PBKDF2(Config.SECRET, salt).read(32)
iv = PBKDF2(Config.SECRET, salt).read(16)

Получил эту ошибку

$python3.7 pbkdf2.py
Traceback (most recent call last):
  File "pbkdf2.py", line 3, in <module>
    import PBKDF2
ModuleNotFoundError: No module named 'PBKDF2'

Как я могу решить эту проблему?


Примечание 1: я также попытался установить pbkdf2 с диспетчером пакетов Ubuntu и это не решило эту проблему.

Примечание 2: Использование python3.7 -m pip install pbkdf2

У меня есть это

 defaulting to user installation because normal site-packages is not writeable
 Requirement already satisfied: pbkdf2 in /home/xyx/.local/lib/python3.7/site-packages (1.3)

Если сначала удаленный с pip3 uninstall pbkdf2 затем у меня есть только первое предупреждение.

1
задан 3 March 2020 в 22:40

1 ответ

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

Python очень придирчив в том, как он проверяет на библиотеки. Вообще говоря, Python import команды проверяют следующие 3 места на Вашу среду при прямом вызове из каталога в запасе установки Ubuntu. Это также располагает по приоритетам эти местоположения, как перечислено:

  1. Ваш текущий рабочий каталог или каталог, выполняемый от. (В этом случае /home/xyz/Projects/Python/, который содержит pbkdf2.py который является тем же файлом, который Вы пытаетесь выполнить, но также и носит то же самое имя как вещь, Вы пытаетесь import от!)
  2. Локальные пакеты пользователя хранят для Python 3. Это то, где pip3 установленный pbkdf2 от PyPI.
  3. Библиотека пакетов системы (который должен только содержать библиотеки стандарта Python и вещи, с которыми Вы установили sudo pip3).

Поскольку Ваш файл называют pbkdf2.py и то же точное имя как библиотека, которую мы установили в локальном хранилище пакетов Вашего пользователя для Python 3, это пытается импортировать из себя, который по очевидным причинам перестал работать. Переименуйте свой файл pbkdf2.py кому: pbkdf2_.py или подобный (как долго, поскольку имя не pbkdf2.py) и это должно затем "просто работать".

(Причина, это затем "Просто Работает", состоит в том, потому что, потому что первый случай (проверки каталога Projects, поскольку 'источники базируются' для проекта) больше не существует - существует нет pbkdf2.py файл и поэтому это не может быть импортировано из. Это затем отступает к второму случаю, Вашему пользовательскому винному магазину в /home/xyz/.local/lib/python3.7/site-packages который является где pbkdf2 на самом деле жизни, таким образом, import команда успешна.)

2
ответ дан 17 March 2020 в 00:09

Другие вопросы по тегам:

Похожие вопросы: