Python中安装库的正确姿势与最佳实践
背景: Python 爱好者,比较多的在 Windows 环境下用 Python ,偶尔用下 Linux ,习惯用 pip 做安装管理。
昨晚搭虚拟环境安装库,在 Windows 上很顺利就安装完了,但在 Linux 上面总是各种报错,虽然面向搜索引擎编程将很多库都安装上了,但还剩下一个 lxml 库死活安装不上。
常说: J (人) J (生)粗(苦)短,你用 Python 。
问下 PY 老司机们,安装库有没有什么特殊姿势,可以尽量避免踩坑?
Python中安装库的正确姿势与最佳实践
anaconda
帖子标题:Python中安装库的正确姿势与最佳实践
核心就两点:用虚拟环境隔离项目,用pip安装包。别把库全装到系统Python里,不然项目之间会互相污染,版本冲突能烦死你。
具体操作:
- 创建虚拟环境:这是标准做法。在项目目录下,运行
python -m venv venv(Windows)或python3 -m venv venv(Mac/Linux)。这会创建一个叫venv的隔离文件夹。 - 激活虚拟环境:
- Windows:
venv\Scripts\activate - Mac/Linux:
source venv/bin/activate激活后,命令行前面会显示(venv),之后所有操作都只在这个环境里生效。
- Windows:
- 用pip安装:激活环境后,直接用
pip install <包名>。需要指定版本就加==,比如pip install requests==2.28.0。 - 保存依赖:装完需要的包后,运行
pip freeze > requirements.txt把当前环境的所有包和版本号存下来。别人拿到你的项目,运行pip install -r requirements.txt就能一键还原环境。
简单说就是:每个新项目都先建个虚拟环境再干活。
去 Pypi 下载.whl 文件
然后 pip install *.whl
有些 Python 库是需要 c 库支持的,比如 lxml
安装 python-dev 包 然后看报错信息 缺什么库就装什么 找个主流 linux 发行版 不会有问题
试过了, linux 版的都下载这样装过,都提示不支持系统平台……
用的是 Linux Mint 。 python-dev 包已经装了,报错提示缺的库也装了。
lxml 的 C 库已经装了。
如果是 Ubuntu : apt-get install -y libxml2-dev python-dev build-essential
然后 pip install 基本可以解决问题。
- - - -
根本原因是 libxml 用了 C 语言写的库,所以要装一个。你用多了就会发现, Linux 下面装 Python 的包远比 Windows 容易。基本上就是看看出错信息,了解一下哪些库系统还没装,然后 apt-get install 对应的包,然后就解决了。
如果是 Windows ,你基本上只能期待有预先编译好的版本,如果没有,那就恭喜你了……
- - - -
此外你可以选择 Anaconda ,作为一个独立的 Python 发行版,它有巨大的预编译仓库。
在 Ubuntu 里面 libxml2 和 libxml2-dev 是两个软件包。前者不带头文件和链接库。
对的, anaconda 自带很多常用库,解决掉不少问题。
会不会没有装 dev 包, lxml-dev 之类的名字的包
可以先装 wheel 然后下载.whl 文件安装 我的 lxml 就是这样装上的
http://www.lfd.uci.edu/~gohlke/pythonlibs/ 附上网址
这个科学技术发行版好像不太适合吧。我是主要用来折腾 flask ,搞网站开发的。
这个方法我已经试过了,提示平台不支持……我明明下的就是 Linux 版的。
错误提示的 dev 包我都装了。不知道会不会是 wheel , steup tool 版本的问题,换个版本提示信息会不一样,今晚回去再试试。
虽然 anaconda 主要是用来进行科学计算,但是很多其他包也都装了,并且自带的 conda 包管理工具虽然速度慢,但是能装上一些 pip 安装失败的包
, 有清华源
小白路过。。。
win 上 lxml 跟 linux 上 lxml 包不一样,按理说 linux 上直接 pip 装就好了啊, win 上才要下单独编译好的才对。。。
你倒是把报错信息贴出来让大家出出主意啊
anaconda+1 傻瓜式装包
<br>apt install (python-lxml | python3-lxml)<br>
看样子没编译经验,别折腾了,缺少各种头文件罢了
电脑不在身边……
把 pip 升级到最新版,之后直接安装就可以了, pip 8.0 之前不支持 wheels 。
建议把系统 Python 和开发用的 Python 分开管理
以前用 pyenv + anaconda
现在用 yaourt 来管理版本 2 和 3
说了是“搭虚拟环境”,当然是分开的啊。
是最新版了。
windows 老老实实 anaconda ,省心省力
对于新人, 没有历史包袱的话, 我现在都推荐用 golang
……你不试试怎么知道不合适。
不是 Anaconda 专用来科学计算,是科学计算的库大多用 C 写。科学计算的大多是研究院,折腾不来自己安装,所以 Anaconda 就是救星了。
我发现程序员反而觉得自己很厉害,不肯用 Anaconda ,硬要折腾 pip 和各种自行编译。当然我原先也是带有这种歧视的,直到我真的用了 Anaconda ……
昨天给树莓派 pip lxml 也出问题了。
看这个 http://lxml.de/installation.html
Go 不太了解,听说 Go 做的程序复制粘贴就能到处跑,这一点确实是让人觉得不错的。
看到一篇说 GO 语言的: http://blog.csdn.net/liigo/article/details/23699459
Go 语言是全静态编译 (而且可以交叉编译), 基本可以做到你说的随拷随用,当然前提是架构相同( IA64, X86, ARM 等), 系统类别相同 ( Linux , Windows, Mac )。
这篇文章之前看过,有两个问题: 一个是作者用既有经验去硬套 go , 肯定会各种不爽, 我一开始也是这样的 ;D , 但是换一个思路就不一样了; 第二是 Go 一直在快速发展, 文章里面提到的问题大多已不存在. 当然没有泛型还是让人不爽 233
为什么我觉得 win 比较麻烦, linux 上面比较方便
不出错的时候,我也觉得 Linux 上面比较方便。 23333
debian 下, apt-get 与 pip 配合使用,目前没遇到什么难装的库;
楼主的问题,大概一条 apt-get intall python-lxml 就差不多解决了
倒是 win 下没有包管理器,那些拿 C 语言写的包要么找第三方编译的,要么装 vs ,要么用 anaconda 这种的
我现在都不爱用 apt-get install python-xxxx 了,因为版本不能自由控制,经常装到旧版,程序 gg 。
这种问题很好解决啊,把错误信息直接扔到 Google 里面,分分钟解决。一般这种问题在 Stackflow 上都有人问过的,所以很好解决。
我在 ubuntu 16.04 下,先用 apt 安装 python-lxml ,若是 python 2.7 再用 pip 安装 lxml:
apt install python-lxml (自动安装在 python 3.5)
pip install lxml (手动安装在 python 2.7)
Anaconda 实在是太好用了,谁用谁知道。。。
#36 這好像是 tautology (比如「理想氣體就是滿足理想氣體方程的氣體」)

