经常会出现这样的情况,有人使用pip
安装了Python软件包,但在Python中却无法导入它。要理解此问题的原因,您必须了解Windows如何查找要运行的可执行文件以及Python软件是如何安装的。基本原则如下:
- 在运行命令时,Windows会在环境变量PATH中搜索可执行文件。它会执行找到的第一个可执行文件。
- Python解释器
python.exe
安装在目录<PYTHON_INSTALL_DIR>
中(例如:C:\Python\3.7
)。
- Python工具(如
pip
、pylint
、virtualenv
、PyCrust
等)安装在目录<PYTHON_INSTALL_DIR>\Scripts
中。
- Windows的Python启动程序
py.exe
安装在您的Windows系统目录中(例如C:\Windows
)。
python
和pip
命令使用所安装目录中的模块,而不是查看PATH。
假设您已经安装了以下Python版本:
C:\Python\2.7
C:\Python\3.6
C:\Python\3.7
并且你的 PATH 环境变量包含以下目录:
C:\Python\2.7
C:\Python\3.6\Scripts
然后,看以下输出:
C:\>python -V
Python 2.7.16
C:\>pip -V
pip 19.1.1 from c:\python\3.6\lib\site-packages\pip (python 3.6)
C:\>py -V
Python 3.7.3
因此,在运行pip
时,安装的包可能与运行python
时获得的版本不同。
要查看已正确安装在系统上的版本,请运行py -0p
。 示例输出:
C:\>py -0p
Installed Pythons found by py Launcher for Windows
-3.7-64 C:\Python\3.7-64\python.exe *
-3.7-32 C:\Python\3.7-32\python.exe
-3.6-64 C:\Python\3.6-64\python.exe
-2.7-64 C:\Python\2.7-64\python.exe
-2.7-32 C:\Python\2.7-32\python.exe
通用解决方案(适用于Windows)
最好不要依赖于系统的PATH。使用py
启动器来选择您想要的版本。为了运行与您想要使用的Python版本相对应的pip
模块,请将pip
作为模块而不是可执行文件启动。
pip install <package>
运行:
py -3.6 -m pip install <package>
要查看您已安装的特定Python版本的Python软件包,请使用以下命令:
py -3.6 -m pip freeze
几点额外说明
- 在安装时,将Python添加到环境变量中还是不添加,是一个选项。如果添加了,它会被添加到PATH的开头,因此最近安装的Python版本将首先被选中。
- Windows系统目录应始终位于PATH中,因此即使您没有将任何Python安装程序添加到PATH中,也应始终可以使用
py
命令。
- 如果您在Windows资源管理器中双击.py文件或在命令提示符中直接键入文件名作为命令(例如
test.py
),则操作将根据Windows注册表确定。文件可能会在IDE中打开,也可能会使用Python解释器执行。这种情况下,通常会使用最近安装的Python版本。命令python test.py
使用的Python版本可能与命令test.py
不同。
- 有些安装程序还包括名为
python2
/python3
(不适用于Windows)、pip3
/pip3.7
等可执行文件。这也允许您指定要使用的Python版本。这些对于那些已存在这些二进制文件并且在路径中的系统非常有用。
py
是一个仅限于 Windows 平台的工具吗? - xrisk