Python 安装库的姿势 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xvx
V2EX    Python

Python 安装库的姿势

  •  
  •   xvx 2017-03-18 10:20:51 +08:00 via iPhone 5177 次点击
    这是一个创建于 3153 天前的主题,其中的信息可能已经有所发展或是发生改变。
    背景: Python 爱好者,比较多的在 Windows 环境下用 Python ,偶尔用下 Linux ,习惯用 pip 做安装管理。

    昨晚搭虚拟环境安装库,在 Windows 上很顺利就安装完了,但在 Linux 上面总是各种报错,虽然面向搜索引擎编程将很多库都安装上了,但还剩下一个 lxml 库死活安装不上。

    常说: J (人) J (生)粗(苦)短,你用 Python 。

    问下 PY 老司机们,安装库有没有什么特殊姿势,可以尽量避免踩坑?
    第 1 条附言    2017-03-18 21:51:52 +08:00
    问题解决啦~~~

    错误信息是:

    collect2: error: ld returned 1 exit status
    error: command 'i686-linux-gnu-gcc' failed with exit status 1


    解决方案:

    sudo apt-get install zlib1g-dev

    sudo pip install lxml --upgrade

    sudo pip uninstall lxml

    sudo pip install lxml

    原理:我也不知道……应该是漏了 zlib1g-dev
    42 条回复    2017-03-21 01:05:51 +08:00
    thedog
        1
    thedog  
       2017-03-18 10:26:52 +08:00 via Android
    anaconda
    icedx
        2
    icedx  
       2017-03-18 10:27:24 +08:00   3
    去 Pypi 下载.whl 文件
    然后 pip install *.whl
    ladrift
        3
    ladrift  
       2017-03-18 10:28:09 +08:00 via Android
    有些 Python 库是需要 c 库支持的,比如 lxml
    playniuniu
        4
    playniuniu  
       2017-03-18 10:30:12 +08:00 via iPhone
    安装 python-dev 包 然后看报错信息 缺什么库就装什么 找个主流 linux 发行版 不会有问题
    xvx
        5
    xvx  
    OP
       2017-03-18 10:43:31 +08:00 via iPhone
    @icedx 试过了, linux 版的都下载这样装过,都提示不支持系统平台……
    xvx
        6
    xvx  
    OP
       2017-03-18 10:44:33 +08:00 via iPhone
    @playniuniu 用的是 Linux Mint 。 python-dev 包已经装了,报错提示缺的库也装了。
    xvx
        7
    xvx  
    OP
       2017-03-18 10:44:56 +08:00 via iPhone
    @ladrift lxml 的 C 库已经装了。
    ipwx
        8
    ipwx  
       2017-03-18 10:47:27 +08:00
    如果是 Ubuntu : apt-get install -y libxml2-dev python-dev build-essential
    然后 pip install 基本可以解决问题。
    - - - -

    根本原因是 libxml 用了 C 语言写的库,所以要装一个。你用多了就会发现, Linux 下面装 Python 的包远比 Windows 容易。基本上就是看看出错信息,了解一下哪些库系统还没装,然后 apt-get install 对应的包,然后就解决了。

    如果是 Windows ,你基本上只能期待有预先编译好的版本,如果没有,那就恭喜你了……
    - - - -

    此外你可以选择 Anaconda ,作为一个独立的 Python 发行版,它有巨大的预编译仓库。
    ipwx
        9
    ipwx  
       2017-03-18 10:48:45 +08:00
    在 Ubuntu 里面 libxml2 和 libxml2-dev 是两个软件包。前者不带头文件和链接库。
    phrack
        10
    phrack  
       2017-03-18 10:53:38 +08:00 via Android
    对的, anaconda 自带很多常用库,解决掉不少问题。
    ladrift
        11
    ladrift  
       2017-03-18 11:19:45 +08:00 via Android
    @xvx 会不会没有装 dev 包, lxml-dev 之类的名字的包
    icherler
        12
    icherler  
       2017-03-18 11:20:27 +08:00
    可以先装 wheel 然后下载.whl 文件安装 我的 lxml 就是这样装上的
    http://www.lfd.uci.edu/~gohlke/pythonlibs/ 附上网址
    xvx
        13
    xvx  
    OP
       2017-03-18 11:21:52 +08:00 via iPhone
    @thedog
    @phrack
    @ipwx 这个科学技术发行版好像不太适合吧。我是主要用来折腾 flask ,搞网站开发的。
    xvx
        14
    xvx  
    OP
       2017-03-18 11:22:46 +08:00 via iPhone
    @icherler 这个方法我已经试过了,提示平台不支持……我明明下的就是 Linux 版的。
    xvx
        15
    xvx  
    OP
       2017-03-18 11:26:51 +08:00 via iPhone
    @ladrift 错误提示的 dev 包我都装了。不知道会不会是 wheel , steup tool 版本的问题,换个版本提示信息会不一样,今晚回去再试试。
    thedog
        16
    thedog  
       2017-03-18 11:30:13 +08:00 via Android
    @xvx 虽然 anaconda 主要是用来进行科学计算,但是很多其他包也都装了,并且自带的 conda 包管理工具虽然速度慢,但是能装上一些 pip 安装失败的包
    billgreen1
        17
    billgreen1  
       2017-03-18 11:33:59 +08:00 via iPhone
    @thedog, 有清华源
    pynix
        18
    pynix  
       2017-03-18 11:39:46 +08:00
    小白路过。。。
    z657386160z
        19
    z657386160z  
       2017-03-18 11:47:40 +08:00
    jy02201949
        20
    jy02201949  
       2017-03-18 11:54:19 +08:00 via iPhone
    win 上 lxml 跟 linux 上 lxml 包不一样,按理说 linux 上直接 pip 装就好了啊, win 上才要下单独编译好的才对。。。
    congeec
        21
    congeec  
       2017-03-18 12:09:49 +08:00
    你倒是把报错信息贴出来让大家出出主意啊
    hugo775128583
        22
    hugo775128583  
       2017-03-18 12:50:43 +08:00 via Android
    anaconda+1 傻瓜式装包
    feather12315
        23
    feather12315  
       2017-03-18 13:10:28 +08:00 via Android   1
    ```
    apt install (python-lxml | python3-lxml)
    ```
    看样子没编译经验,别折腾了,缺少各种头文件罢了
    xvx
        24
    xvx  
    OP
       2017-03-18 13:47:36 +08:00 via iPhone
    @congeec 电脑不在身边……
    guyskk
        25
    guyskk  
       2017-03-18 14:11:19 +08:00 via Android
    把 pip 升级到最新版,之后直接安装就可以了, pip 8.0 之前不支持 wheels 。
    azurefire
        26
    azurefire  
       2017-03-18 14:54:09 +08:00 via iPhone
    建议把系统 Python 和开发用的 Python 分开管理
    4ever911
        27
    4ever911  
       2017-03-18 15:04:14 +08:00
    以前用 pyenv + anaconda

    现在用 yaourt 来管理版本 2 和 3
    xvx
        28
    xvx  
    OP
       2017-03-18 15:04:20 +08:00
    @azurefire 说了是“搭虚拟环境”,当然是分开的啊。
    @guyskk 是最新版了。
    janxin
        29
    janxin  
       2017-03-18 15:12:22 +08:00
    windows 老老实实 anaconda ,省心省力
    tt0411
        30
    tt0411  
       2017-03-18 17:05:41 +08:00
    对于新人, 没有历史包袱的话, 我现在都推荐用 golang
    ipwx
        31
    ipwx  
       2017-03-18 19:50:02 +08:00   1
    @xvx ……你不试试怎么知道不合适。

    不是 Anaconda 专用来科学计算,是科学计算的库大多用 C 写。科学计算的大多是研究院,折腾不来自己安装,所以 Anaconda 就是救星了。

    我发现程序员反而觉得自己很厉害,不肯用 Anaconda ,硬要折腾 pip 和各种自行编译。当然我原先也是带有这种歧视的,直到我真的用了 Anaconda ……
    uucloud
        32
    uucloud  
       2017-03-18 19:53:22 +08:00
    昨天给树莓派 pip lxml 也出问题了。

    看这个 http://lxml.de/installation.html
    xvx
        33
    xvx  
    OP
       2017-03-18 20:52:32 +08:00
    @tt0411 Go 不太了解,听说 Go 做的程序复制粘贴就能到处跑,这一点确实是让人觉得不错的。

    看到一篇说 GO 语言的: http://blog.csdn.net/liigo/article/details/23699459
    tt0411
        34
    tt0411  
       2017-03-18 21:13:38 +08:00
    @xvx Go 语言是全静态编译 (而且可以交叉编译), 基本可以做到你说的随拷随用,当然前提是架构相同( IA64, X86, ARM 等), 系统类别相同 ( Linux , Windows, Mac )。

    这篇文章之前看过,有两个问题: 一个是作者用既有经验去硬套 go , 肯定会各种不爽, 我一开始也是这样的 ;D , 但是换一个思路就不一样了; 第二是 Go 一直在快速发展, 文章里面提到的问题大多已不存在. 当然没有泛型还是让人不爽 233
    killerv
        35
    killerv  
       2017-03-18 21:22:25 +08:00
    为什么我觉得 win 比较麻烦, linux 上面比较方便
    xvx
        36
    xvx  
    OP
       2017-03-18 21:55:32 +08:00
    @killerv 不出错的时候,我也觉得 Linux 上面比较方便。 23333
    zjqzxc
        37
    zjqzxc  
       2017-03-19 10:32:41 +08:00
    debian 下, apt-get 与 pip 配合使用,目前没遇到什么难装的库;
    楼主的问题,大概一条 apt-get intall python-lxml 就差不多解决了

    倒是 win 下没有包管理器,那些拿 C 语言写的包要么找第三方编译的,要么装 vs ,要么用 anaconda 这种的
    ipwx
        38
    ipwx  
       2017-03-19 10:49:10 +08:00
    @zjqzxc 我现在都不爱用 apt-get install python-xxxx 了,因为版本不能自由控制,经常装到旧版,程序 gg 。
    Nitroethane
        39
    Nitroethane  
       2017-03-19 22:55:54 +08:00
    这种问题很好解决啊,把错误信息直接扔到 Google 里面,分分钟解决。一般这种问题在 Stackflow 上都有人问过的,所以很好解决。
    Tony8Finet
        40
    Tony8Finet  
       2017-03-20 06:50:36 +08:00
    我在 ubuntu 16.04 下,先用 apt 安装 python-lxml ,若是 python 2.7 再用 pip 安装 lxml:

    apt install python-lxml (自动安装在 python 3.5)
    pip install lxml (手动安装在 python 2.7)
    firldlove
        41
    firldlove  
       2017-03-20 10:47:30 +08:00 via iPad
    Anaconda 实在是太好用了,谁用谁知道。。。
    franklinyu
        42
    franklinyu  
       2017-03-21 01:05:51 +08:00
    @xvx #36 好像是 tautology (比如「理想就是足理想方程的」)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5761 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 02:56 PVG 10:56 LAX 18:56 JFK 21:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86