Python 导入PyDictionary库时遇到问题

Python 导入PyDictionary库时遇到问题,python,modulenotfounderror,Python,Modulenotfounderror,基本上,我使用pip install PyDictionary下载了该库,并通过再次编写相同的内容来确保它的存在,结果如下: Requirement already satisfied: PyDictionary in c:\users\ziad\appdata\local\programs\python\python39\lib\site-packages (2.0.1) Requirement already satisfied: bs4 in c:\users\ziad\appdata\l

基本上,我使用
pip install PyDictionary
下载了该库,并通过再次编写相同的内容来确保它的存在,结果如下:

Requirement already satisfied: PyDictionary in c:\users\ziad\appdata\local\programs\python\python39\lib\site-packages (2.0.1)
Requirement already satisfied: bs4 in c:\users\ziad\appdata\local\programs\python\python39\lib\site-packages (from PyDictionary) (0.0.1)
Requirement already satisfied: goslate in c:\users\ziad\appdata\local\programs\python\python39\lib\site-packages (from PyDictionary) (1.5.1)
Requirement already satisfied: requests in c:\users\ziad\appdata\local\programs\python\python39\lib\site-packages (from PyDictionary) (2.25.1)
Requirement already satisfied: click in c:\users\ziad\appdata\local\programs\python\python39\lib\site-packages (from PyDictionary) (7.1.2)
Requirement already satisfied: beautifulsoup4 in c:\users\ziad\appdata\local\programs\python\python39\lib\site-packages (from bs4->PyDictionary) (4.9.3)
Requirement already satisfied: soupsieve>1.2 in c:\users\ziad\appdata\local\programs\python\python39\lib\site-packages (from beautifulsoup4->bs4->PyDictionary) (2.2.1)
Requirement already satisfied: futures in c:\users\ziad\appdata\local\programs\python\python39\lib\site-packages (from goslate->PyDictionary) (3.1.1)
Requirement already satisfied: idna<3,>=2.5 in c:\users\ziad\appdata\local\programs\python\python39\lib\site-packages (from requests->PyDictionary) (2.10)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\ziad\appdata\local\programs\python\python39\lib\site-packages (from requests->PyDictionary) (1.26.4)
Requirement already satisfied: chardet<5,>=3.0.2 in c:\users\ziad\appdata\local\programs\python\python39\lib\site-packages (from requests->PyDictionary) (4.0.0)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\ziad\appdata\local\programs\python\python39\lib\site-packages (from requests->PyDictionary) (2020.12.5)
这就是错误:

Traceback (most recent call last):
  File "C:\Users\Ziad\Desktop\programs\Dictionary.py", line 1, in <module>
    from PyDictionary import PyDictionary
ModuleNotFoundError: No module named 'PyDictionary'
回溯(最近一次呼叫最后一次):
文件“C:\Users\Ziad\Desktop\programs\Dictionary.py”,第1行,在
从PyDictionary导入PyDictionary
ModuleNotFoundError:没有名为“PyDictionary”的模块
我发现正确执行程序的唯一方法是将文件移动到库所在的文件夹中,以便atom可以找到库。奇怪的是,图书馆的numpy工作得非常完美。
我很想知道这个问题的答案。

您遇到的问题是您的
pip
命令没有连接到您安装的
python3

如果您使用的是Windows,那么您应该有一个“python启动器”,您可以使用它来双重检查已安装的python版本,如下所示:

PS C:\> py -0
Installed Pythons found by C:\windows\py.exe Launcher for Windows
 -3.9-64 *
 -3.7-32
在这里,您可以看到我的设备上安装了两个版本的Python。那么,让我们检查一下这两个安装使用各自版本的
pip
安装了什么

让我们从我的
3.7
安装开始:

PS C:\> py -3.7 -m pip list
Package            Version
------------------ ---------
beautifulsoup4     4.8.1
Jinja2             2.11.2
keyring            21.2.0
PS C:\> py -3.9 -m pip list
Package                          Version
-------------------------------- ---------
matplotlib                       3.4.1
numpy                            1.19.4
pandas                           1.1.5
pip                              21.0.1
在这里,我们可以看到我安装了三个软件包

现在让我们检查一下我的
3.9
安装:

PS C:\> py -3.7 -m pip list
Package            Version
------------------ ---------
beautifulsoup4     4.8.1
Jinja2             2.11.2
keyring            21.2.0
PS C:\> py -3.9 -m pip list
Package                          Version
-------------------------------- ---------
matplotlib                       3.4.1
numpy                            1.19.4
pandas                           1.1.5
pip                              21.0.1
我在上面所做的基本上是调用不同的
python
安装,并使用以下标志打开它:

-m mod : run library module as a script (terminates option list)
pip
命令基本上只是
-m pip
的别名,因此当我发出上述命令时,我将使用特定的python安装启动
pip


如果您没有上面示例中的“python启动器”,但是python解释器有不同的别名,那么您可以用相同的方式发出相同的命令,只需使用别名即可

以下是几个例子:

# will show you the installed packages for the alias "python2"
python2 -m pip list

# will show you the installed packages for the alias "python3"
python3 -m pip list
显然,您可以使用相同的逻辑向
pip
发出其他命令,因此,如果您想为特定版本安装软件包,可以执行以下操作:

# will try to install the given package for the alias "python3"
python3 -m pip install <nameOfPackage>
#将尝试为别名“python3”安装给定的软件包
python3-m管道安装

您的设备上可能安装了多个版本的Python。您使用什么命令启动失败的脚本?另外,您正在运行什么操作系统?python3 Dictionary.py。我正在运行windows 10好的,如果您发出命令
python3-m pip list
,那么您要使用的包是否会显示在那里?如果没有,那么您之前发出的
pip
命令就没有“连接”到启动脚本所用的
python3
解释器。此外,由于您运行的是Windows,因此您还可以使用“python启动器”来检查您的安装情况。您可以通过发出命令来尝试:
py-0--list
,该命令应该列出启动器知道的所有安装。是的,它没有显示,所以如何修复它。我是一个初学者,所以请容忍我。我实际上在我的电脑上搜索了另一个安装的python版本,但什么也没找到。谢谢你帮助我,但这不是问题的原因。然而,我试着运行这个
python3-mplist
,它只显示了numpy。这意味着什么?这意味着在
python3
安装中安装的唯一软件包是
numpy
。因为您有另一个
pip
,它与您正在使用的安装包不一样,所以在您的设备上的某个地方100%有另一个python安装,即路径中pip命令的“所有者”。如果您想在
python3
中安装软件包,只需发出以下命令:
python3-m pip install PyDictionary
。非常感谢您的帮助,先生,您对其他现有pip的看法完全正确。我不知道为什么,但只是将
python3-m
添加到
PIP-install-PyDictionary
中就可以了。也许,我的电脑把这个PIP分配给了另一个版本的python,而不是python3。没问题。如果你的问题已经得到回答,请毫不犹豫地接受我的回答,使问题得到解决。