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
lshore
V2EX  ›  Python

关于 Python 软件包升级问题

  •  
  •   lshore · 2016-06-20 10:13:51 +08:00 · 3295 次点击
    这是一个创建于 3077 天前的主题,其中的信息可能已经有所发展或是发生改变。
    安装 Python 软件,依赖于 python six 较高版本
    然后就升级了一下 six
    结果发现

    如果是在 python 目录下,/usr/local/lib/python2.7/dist-packages
    nlu@node3:/usr/local/lib/python2.7/dist-packages$ python
    Python 2.7.6 (default, Jun 22 2015, 17:58:13)
    [GCC 4.8.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import six
    >>> six.__version__
    '1.10.0'

    如果是在别的目录下,比如 ~
    nlu@node3:~$ python
    Python 2.7.6 (default, Jun 22 2015, 17:58:13)
    [GCC 4.8.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import six
    >>> six.__version__
    '1.5.2'

    这个问题怎么解决? 谢谢了先
    13 条回复    2016-06-20 11:57:35 +08:00
    yangtukun1412
        1
    yangtukun1412  
       2016-06-20 10:19:04 +08:00
    看一下两种情况下的 six.__file__, python 会把当前工作目录放到 sys.path 里第一位的.
    seerhut
        2
    seerhut  
       2016-06-20 10:25:40 +08:00
    这就是传说中的全角英文么

    看看你的 sys.path ,应该就能看出原因了。
    lshore
        3
    lshore  
    OP
       2016-06-20 10:27:41 +08:00
    @yangtukun1412
    '1.10.0' 的是在 /usr/local/lib/python2.7/dist-packages  下,
    '1.5.2'  的是在 /usr/lib/python2.7/dist-packages 下

    那应该怎么把six升级到 /usr/lib 下呢?
    lshore
        4
    lshore  
    OP
       2016-06-20 10:29:26 +08:00
    @seerhut 往 sys.path 里再添加我的路径? 中文输入法中英文懒得切换的原因
    SourceMan
        5
    SourceMan  
       2016-06-20 10:30:33 +08:00
    你这个英文都是全角吗?
    lshore
        6
    lshore  
    OP
       2016-06-20 10:32:16 +08:00
    @SourceMan 怎么都对这个感兴趣,就是linux 搜狗输入法啊
    oclock
        7
    oclock  
       2016-06-20 10:34:24 +08:00
    检查 PYTHONPATH 环境变量,检查~/.local/

    请不要用全角英文
    lshore
        8
    lshore  
    OP
       2016-06-20 10:40:37 +08:00
    @oclock .. 听起来我是犯了什么规.. ok
    jixiangqd
        9
    jixiangqd  
       2016-06-20 10:43:05 +08:00
    建议楼主学着用 virtualenv
    Livid
        10
    Livid  
    MOD
       2016-06-20 10:43:47 +08:00
    是的,不要用全角。主题已经帮你更新了一下,因为实在看着太难看。

    以后请一定注意。

    另外,如果要确保 Python 项目中的包不受制于系统自带的,可以用 virtualenv
    ynyounuo
        11
    ynyounuo  
       2016-06-20 10:46:49 +08:00
    @lshore
    Because it looks ugly

    https://www.zhihu.com/question/21725432/answer/19155917
    lshore
        12
    lshore  
    OP
       2016-06-20 10:49:35 +08:00
    @Livid 好的
    lshore
        13
    lshore  
    OP
       2016-06-20 11:57:35 +08:00
    各位,我还没搞定
    我设置了 PYTHONPATH 了
    原来
    >>> import sys
    >>> sys.path
    ['', '/usr/local/lib/python2.7/dist-packages/Project_RNN_Enhancement-0.0.1-py2.7.egg', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']

    现在
    >>> sys.path
    ['', '/usr/local/lib/python2.7/dist-packages/Project_RNN_Enhancement-0.0.1-py2.7.egg', '/usr/lib/python2.7/dist-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']

    可以看到
    '/usr/local/lib/python2.7/dist-packages' 是添加进去了
    但是在 /usr/lib/python2.7/dist-packages 后面啊
    我这两个目录里都有 six 包
    怎么办,还是会先找 /usr/lib/python2.7/dist-packages 下边的

    我能否升级 six 就是直接升级 /usr/lib/python2.7/dist-packages 下边的,怎么弄呢.
    很奇怪,为啥升级会默认去升级 /usr/local/lib/python2.7/dist-packages 的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2758 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 12:06 · PVG 20:06 · LAX 04:06 · JFK 07:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.