专栏首页未闻Code一日一技:如何在Python代码里面调用 pip安装第三方库

一日一技:如何在Python代码里面调用 pip安装第三方库

摄影:产品经理

买单:kingname

说到安装 Python 的第三方库,会 Python 的同学都知道,在终端使用pip install xxx即可。

那么如果我想在代码里面安装第三方库怎么办呢?可能有人想到使用 os 模块:

import os
package_name = 'requests'
os.system(f'pip install {package_name}')

这种方法确实可行,并且即使你在虚拟环境中使用这种方式安装,也确实不会安装到系统的 Python 环境中。

但是这种方式总感觉有点奇怪。而且如果这个package_name字符串经过精心构造,可以执行任意系统命令,例如:

import os
package_name = 'requests && rm -rf *'
os.system(f'pip install {package_name}')

为了防止这种情况发生,我们可以直接调用pip这个 Python 包:

from pip._internal import main

main.main(['install', '第三方库名'])

运行效果如下图所示:

命令行下面的参数都可以通过转换为列表的形式执行,例如:

from pip._internal import main

main.main(['install', '-r', 'requirements.txt'])

本文分享自微信公众号 - 未闻Code(itskingname),作者:kingname

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用个小技巧,趁你不备,rm -rf你的电脑

    大家回想一下,你是不是遇到过这种情况:有时候,你访问一个网站,它突然给你下载了一个东西。特别是当你用 Chrome 的时候,浏览器直接就自动给你下载到“下载”文...

    青南
  • 使用倒排索引提高大批量字符串搜索效率

    在Python中,如果要判断一个字符串是否在另一个字符串里面,我们可以使用 in关键字,例如:

    青南
  • 一日一技:三种方式让列表首尾相连循环不息?

    青南
  • 【Python实践-5】使用迭代查找一个

    迭代: 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。 在Python中...

    py3study
  • Android实现Reveal圆形Activity转场动画的完整步骤

    Activity的转场动画很早就有,但是太过于单调,样式也不好看,本文将给大家介绍了关于Android实现Reveal圆形Activity转场动画的相关内容,分...

    砸漏
  • IOS GCD执行并发编程

    用户5760343
  • scrapy安装失败:error:Mic

    今天在安装scrapy的时候(pip install Scrapy),出现了如下错误:

    py3study
  • JavaScript中的Monorepos,反模式

    笔者最近注意到一个趋势,那就是在一个存储库中包含多个npm微包。许多流行的开源项目采用这种模式,例如React、Parcel、Babel等等。笔者认为,在大多数...

    人工智能小咖
  • 如何优雅的写好Pythonic代码?

    Python 与其它语言(比如Java或者C++)相比有比较大的区别,其中最大的特点就是非常简洁。如果按照其它语言的思路来写Python代码,则会使得代码繁琐复...

    测试小兵
  • Groovy中的元组

    Groovy元组是有序的,不变的元素列表。Groovy有自己的groovy.lang.Tuple类。我们可以通过构造函数Tuple提供需要包含在其中的所有元素来...

    FunTester

扫码关注云+社区

领取腾讯云代金券