python pip特殊用法之pip install -v -e .命令详解

 更新时间:2022年09月08日 14:46:15   作者:活成自己的样子啊  
这篇文章主要给大家介绍了关于python pip特殊用法之pip install -v -e .命令的相关资料,文中通过图文以及实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

前言

之前在使用包括大型文档(商汤科技、百度飞浆)代码的时候都一直使用 pip install -v -e . ,这一命令,但是一直不是很清楚它到底是”什么“。

  • 当修改完代码文件的一些配置文件之后都要使用它,不然就会报错!
  • 他出现在了商汤科技的使用文档里面。

在学习商汤科技的mmdetection文档时遇到:

 (1)安装mmcv时,它使用了类似的 pip install -e .

(2)安装mmdet的时候,他又使用了这个命令。

分析

在分析之前,我们要先来说一个知识点:什么是 命名空间软件包 ?

当我们右键一个文件夹时,我们可以找到如下的一个选项:

命名空间软件包是对相关的包或模块进行分组的一种方法,通常是一个被忽略的功能,它对于在较大的项目中构建打包生态系统非常有用。

如果你的应用组件的开发、打包和版本化都是独立的,但仍然希望从同一个命名空间访问它们,那么命名空间包特别有用,它有利于明确每个包所属的组织或项目。

为什么要讲这个呢,因为在我们下载的代码里面,有一个文件夹是命名空间软件包:

关于 命名空间软件包 的解读我们先到这里,知道他是为了方便使用者可以自由修改的可以了。

自己也分析了有一段时间了,已经有了理解,也就不和大家卖关子了,直接开始说结论:

首先,这个命令前面的pip install大家应该都熟悉,之后的-v -e .应该分成 -v ,-e , .  这三个部分来看。

  • -v:verbose, or more output.  (输出更详细的信息)
  • -e:  installing a project in editable mode.  (以可编辑的模式安装项目)
  • . :  一个点,代表相对路径,也就是当前路径  (代表路径)

注: 我自己翻译的,勿喷~~~

首先,我把mmdetection的项目文件夹放到了lalala文件夹下面,cd进入文件夹,执行 pip install -e . 命令:

之后,我来到lalala文件夹路径下面,执行 pip install -e .\mmdetection-master\ 命令:

 他们居然执行了相同的操作!!!(好吧,我只是证明了那个点是个路径而已~~~)

好了!接下来,我将把 pip install -e . 的全部执行流程截图:

注:这里我把所有库都装完了,所以他只是检测了一遍,就过去了。

对于大家来说,看到了:

  • 他把 requirments.txt 里面的依赖装了一遍。
  • 他把 mmdet 这个库重新卸载又装了一遍。<这个是命名空间软件包>

对于我来说:

  • 他把 setup.py 执行了一遍! (使用命令 python setup.py develop !)

注:至于 setup.py 是如何工作的,这又是一门学问~~~这里就不在详细展开了【狗头保命】,以后有时间可能会再写一篇博客说说。 

对于好多小伙伴来说,都以为 -e . 是把当前文件夹下面的  命名空间软件包 安装到第三方库里面,这是错误的,就比如说,我把 setup.py 删了,他就会报错:

这里我把 setup.py 删了:

再运行 pip install -e . :

如果你还不服气,觉得,这和  requirments.txt 有关系:(我再把 requirments.txt 删了)

 注: 这里我不仅把 requirments.txt  删了,还把 requirments文件夹 删了。

如果你还不服气,你说-e 直接指定mmdet就可以安装这个命名空间软件包到包管理器里面(第三方库):(我改变执行命令为 pip install -e mmdet

得了。。没脾气了。。 

结论

行了,也差不多可以得出结论了:

  • 命名空间软件包: 这里指 mmdet 这个库的可修改的体现,就是如果是一个正常的第三方库的话,他一般只是可读模式,但是使用命名空间软件包这个方式,可以实现对第三方库进行修改。
  • 对于 命名空间软件包 来说,他只当作一个标记,并不是 pip install -e . 的直接执行对象。
  • pip install -e .的直接执行对象是当前文件下面的 setup.py 。
  • setup.py 内包含了执行命令,也就是 安装依赖 和将 命名空间软件 重新安装到包管理器中。

使用方法总结:

  • 你在mmdet包下面修改的配置,其实并没有直接加载到第三方库里面,也就是修改完之后并没有让环境变成你修改完的样子。
  • mmdetection里面导的mmdet是你anaconda里面的(也就是你的包管理器里面的)mmdet库,不是你那个 mmdetection-master/mmdet 的文件夹。

第三方库里面的 mmdet 和 mmdetection-master 对比:

mmdet 第三方库:

 mmdetection-master 里面的mmdet包:

呦,,还挺相似啊~~~至少大差不差

后记

大家可能不大适应这种动态修改第三方库的方法,但他设计出来就是为了方便我们修改第三方库的,不要去拒绝,尝试着去使用,耐心的去研究这里面的方法,会有不一样的收获!

到此这篇关于python pip特殊用法之pip install -v -e .命令详解的文章就介绍到这了,更多相关pip install -v -e .命令详解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 举例讲解如何在Python编程中进行迭代和遍历

    举例讲解如何在Python编程中进行迭代和遍历

    这篇文章主要介绍了举例讲解如何在Python编程中进行迭代和遍历,是Python入门学习中的基础知识,需要的朋友可以参考下
    2016-01-01
  • Python实现绘制多种激活函数曲线详解

    Python实现绘制多种激活函数曲线详解

    所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。这篇文章主要介绍了Python如何实现绘制多种激活函数曲线,希望对大家有所帮助
    2023-04-04
  • pycharm远程连接vagrant虚拟机中mariadb数据库

    pycharm远程连接vagrant虚拟机中mariadb数据库

    这篇文章主要介绍了pycharm远程连接vagrant虚拟机中mariadb数据库,需要的朋友可以参考下
    2020-06-06
  • 一款Python工具制作的动态条形图(强烈推荐!)

    一款Python工具制作的动态条形图(强烈推荐!)

    有时为了方便看数据的变化情况,需要画一个动态图来看整体的变化情况,下面这篇文章主要给大家介绍了一款Python工具制作的动态条形图的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • Python语法快速入门指南

    Python语法快速入门指南

    这篇文章主要介绍了Python语法快速入门指南,包括注释和引号的使用等基本语法知识,需要的朋友可以参考下
    2015-10-10
  • Python做个自定义动态壁纸还可以放视频

    Python做个自定义动态壁纸还可以放视频

    这篇文章主要介绍了如何用Python做个可以放视频自定义动态壁纸,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • python基础之并发编程(三)

    python基础之并发编程(三)

    这篇文章主要介绍了详解python的并发编程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-10-10
  • 解决jupyter 在浏览器中 代码不执行的问题

    解决jupyter 在浏览器中 代码不执行的问题

    这篇文章主要介绍了解决jupyter 在浏览器中 代码不执行的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python 实现读取csv数据,分类求和 再写进 csv

    python 实现读取csv数据,分类求和 再写进 csv

    这篇文章主要介绍了python 实现读取csv数据,分类求和 再写进 csv,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python调用ChatGPT制作基于Tkinter的桌面时钟

    Python调用ChatGPT制作基于Tkinter的桌面时钟

    这篇文章主要为大家详细介绍了Python如何调用ChatGPT制作基于Tkinter的桌面时钟,文中的示例代码讲解详细,感兴趣的可以了解一下
    2023-03-03

最新评论