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 · 4632 次点击
    这是一个创建于 2812 天前的主题,其中的信息可能已经有所发展或是发生改变。
    背景: 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   ·   实用小工具   ·   5787 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 103ms · UTC 03:24 · PVG 11:24 · LAX 19:24 · JFK 22:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.