向python项目中导包时,查找不到包的问题

现象

在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文件夹

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容