现象
在pycharm中,我们可以直接install package,非常方便
但是,这种方法对于一些package而言没有效果,pycharm不支持对它下载
常见的解决办法是:
在cmd中使用pip install package 来下载package
然而,在pycharm中导入包时依旧报错
经过查阅和搜索相关解决方法,对python中package管理的原理有了一点了解,于是便可以解决上面的问题
原理
三个 pip install
本人电脑中安装了anaconda,又安装了不同版本的python,同时创建了python项目
这三者均含有pip.exe可执行程序
于是第一个问题: cmd中直接使用的pip属于以上三者中的哪一个
经过查看,本人电脑中是使用的anaconda中的pip进行的安装
这就是问题的根源,不同pip,下载的包会安装在不同的路径下,所以我们要使用对应的pip去将包下载到对应的路径下
python项目加载包的原理
每一个项目中都含有venv(环境)文件夹,子文件夹Scripts包含了pip.exe, 而子文件夹Lib中的文件夹site-packages,就是存储其对应的pip.exe下载的packages.
不论是anaconda,还是独立的python,各自的pip install 都是这个结构
而python项目默认只加载自己site-packages文件夹下的packages
两种解决方案
解决方案1:
进入指定python项目中的Scripts文件路径,再只用pip install package
这是下载的包就在当前项目的site-packages中,于是便可以加载
方案1有一个严重的问题:
对于同一个package ,如果再不同的项目中均需要使用,每一个项目就都要使用pipjin下载,这非常笨拙
解决方案2:
当电脑中有多个不同版本的python时,python项目可以选择不同的python.exe作为自己的编译器
所以首先要确定该项目使用的python的路径,找到该版本python中的pip.exe和site-packages文件夹
使用该版本python对应的pip来下载package
重点步骤:
在python项目的venv文件夹的子文件夹site-packages文件夹下
添加mypath.pth文件,后缀必须是.pth。其中写入指定python的site-packages文件夹路径
这时,当在项目自己的site-packages文件夹下找不到想要的packages时,就会到该文件链接的路径下查找
总结: 当新建一个工程文件,需要配置环境时,可进行如下操作:
1. 将工程的运行环境选择最原始的 python3.7 (其site-packages 中有mypkpath.pth文件,连接到Anoconda3的site-packages文件夹)
2.在当前工程文件的 venv的site-packages文件夹下,新建文件mypath.pth, 链接到python3.7的site-packages文件夹