python包管理工具ports_C 语言中有没有类似 Python 中 pip 的包管理工具?

本文探讨了C语言虽然没有直接的类似Python的pip,但在Unix-like系统中通过系统工具如yum实现了间接的包管理。它揭示了C编程环境下包管理的特殊形式,并比较了C与Python、.NET等语言的包管理器区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@涛吴 的回答很棒,但可能过于专业,而且我也想提一些不一样的观点。尝试尽量用通俗的语言讲下。限于个人水平及易懂起见,遣词用句可能不太严谨,见谅。

要回答这个问题,不妨回顾一下“包管理器”的工作场景。

你执行pip install,python(平台)就会把你所请求的包下载安装到 python(平台)的相应位置即包管理目录内,那么下次你使用 python(语言)写程序并尝试 import的时候,python(平台)就可以到包管理目录中找到你刚下载好的模块,得以让你顺利 import,你的程序得以顺利执行,不至于 not found。

注意这里 python 这个词,可以同时指代 python 这个软件平台以及在该平台上解释执行的编程语言。类似的,pip 之于 python 就如同 npm 之于 node(平台叫 node ,编程语言是 javascript,包管理器叫 npm),composer 之于 php(平台和语言都叫 php)一样。这些软件平台在使用之前都要经过安装的过程(我们平常说的搭建环境即包含了安装过程)。包管理器则作为软件平台的一个模块被同时部署在了机器上。

再进一步,nuget 是 .net 平台的包管理器,而 .net 的语言可不止 c# 一种。因此我们说 .net 拥有包管理器而 c# 没有,否则就犯了概念性的错误。

c 的情形和 c#/javascript 有几分相似:当我们说“c 语言”这个词的时候,它很明确就是指代一门编程语言而非一个平台。因此说“c 语言中没有类似 Python 中 pip 的包管理工具”是没有毛病的。但非绝对:广义上讲,如果我们非要给 c 找一个“平台”的话,那大概就是 unix-like 系统本身了。

unix 系统本身可以非严格都看作一个巨大的 c shell,而 unix 本身的包管理器就是“c 语言的包管理器”。当你 yum install 某 devel 包的时候,头文件会被加入 include 目录供你 #include,静态库会被加入 libs 目录供你在连接的时候引入,也许还有可执行程序被加入 bin。现在你可以在你的 c 程序里面引用你刚刚安装的包了,这难道不正是包管理所干的事情吗?

总结一下这个问题。C 语言中究竟有没有类似 Python 中 pip 的包管理工具?非要说的话还真有,但可能其存在形式/工作方式和你平常想象中不同而已。之前写过一个论证 C/C++ 和其他编程语言地位差别的回答,你可以拓展参考下。现在的编程语言越来越多,为什么 C 和 C++ 还没有被现在的时代淘汰呢?​www.zhihu.comzhihu-card-default.svg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值