Python 是一门优雅的语言,简洁的语法,强大的功能。当然丰富的第三方库,更能加速开发。那么问题来了,如何安装这些第三方库(包)呢?
安装第三方库的方式其实不多。下面就介绍一些技巧。
源码安装
很多第三方库都是开源的,几乎都可以在github 或者 pypi上找到源码。找到源码格式大概都是 zip 、 tar.zip、 tar.bz2格式的压缩包。解压这些包,进入解压好的文件夹,通常会看见一个 setup.py 的文件。打开命令行,进入该文件夹。运行
python setup.py install
这个命令,就能把这个第三库安装到系统里,也就是你的 Python 路径,windows大概是在 C:\Python2.7\Lib\site-packages。
Linux会在 /usr/local/lib/python2.7/dist-packages。
Mac 应该在 /Library/Python/2.7/site-packages。如果是在 virtulenv环境下安装,这个包就被安装在所建立的虚拟环境下的 site-packages/目录下。想要卸载这些库也很简单,进入 site-packages,直接删掉库文件就 OK 啦。当然,这些安装可能有一点麻烦,需要下载,解压,再运行安装,卸载也不是很方便。有没有一种工具,可以帮外面管理这些库呢?
包管理器 (pip 和 easy_install)
现在很多编程语言,都带有包管理器,例如 Ruby 的 gem,nodejs的npm。Python当然也不例外,拥有大名鼎鼎的 pip和 easy_install。
前面说到的pypi就是一些 python第三库所在的源,使用 pip 或者 easy_install 安装模块,会搜索这个源,然后自动下载安装。比如我们需要安装 flask 框架具体命令如下:
pip install flask
或者
easy_install flask
简单吧,一个简单的命令就搞定。卸载也很方便,例如我们需要卸载flask
pip uninstall flask
查看所安装的包,包括系统自带的和手动安装的
pip list
还可以搜索包
pip search flask
还可以重定向输出项目使用的库。
pip freeze > requirements.txt
这样就会把该环境下的第三方库重定向到 requirements.txt文件内,如果给别人安装项目的依赖,只需要运行:
pip install -r requirements.txt
很方便吧。当然,有时候,我们的网络并不是那么顺畅,pip是在线安装的,可不可以离线呢?当然可以啦,pip install 的第一步,就是在 pypi 上寻找包,然后下载到本地。如果网络不好,可以先建一个本地的仓库,把常用的包离线下载。比如可以下载 flask 的源码
pip intall flask-master.zip
同样也可以安装。
虚拟环境相关安装
当然,上面介绍的,其实也是很普通很常见的方式,也算不上什么技巧。下面介绍的,则是一些需要了解原理和解决非常规问题的技巧。
使用Python,我们会喜欢用 virtualenv建立虚拟环境,例如建立一个 venv的虚拟环境。我们只需要 source进去就可以使用pip安装了。可是有时候,即使在虚拟环境下,使用了sudo的前缀(windows忽略),那么安装的库不是在虚拟环境,而是被安装到系统下的site-package 目录下了。
windows的用户可能会很开心,不需要注意这个问题。当然 windows 也同样有着自己的问题。在 windows上安装python,一般是编译好的二进制包exe可执行文件。通常有 32位和64位的python。对于第三方库,本来32和64不会有太大的差别。但是对于一些C写的python库,如mysqldb,PIL, pillow,会发现使用 pip或者 easy_install 的方式会报错:
Fixing python error: Unable to find vcvarsall.bat
原因大概是 windows上缺少一些 C编译器东东。源码需要编译一下才能安装,此时 windows就很苦逼了。当然,有一些好心人,帮您把常用的一些库编译成 exe 可执行文件,放到了这个站点。你只需要寻找对于版本的,下载一键安装。
可是,还有一个问题,下载 exe 文件,运行安装,这个库是被安装到了系统的 site-package 目录下,如果我在windows 建立了venv虚拟环境,这样安装不是歇菜了么?
别担心,这个文章的真正技巧,就是为了解决这个问题的。我们来安装64位的 mysqldb。先下载 MySQL‑python‑1.2.5.win‑amd64‑py2.7.exe 在 windows 上,用命令行进入虚拟环境 venv。然后运行
easy_install MySQL‑python‑1.2.5.win‑amd64‑py2.7.exe
完美解决,在 venv 虚拟环境,将mysqldb 库安装到了venv下。
有了上面三个方式,几乎涵盖 python 所有平台的第三方库安装。不过话说回来,尽管 Python 是跨平台,开发环境,还是尽量使用 Linux或者MacOS,这两个系统有更好的工具以及省去很多莫名其妙的问题。
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。