关于 Python 软件包升级问题

2016-06-20 10:13:51 +08:00
 lshore
安装 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'

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

看看你的 sys.path ,应该就能看出原因了。
lshore
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
2016-06-20 10:29:26 +08:00
@seerhut 往 sys.path 里再添加我的路径? 中文输入法中英文懒得切换的原因
SourceMan
2016-06-20 10:30:33 +08:00
你这个英文都是全角吗?
lshore
2016-06-20 10:32:16 +08:00
@SourceMan 怎么都对这个感兴趣,就是linux 搜狗输入法啊
oclock
2016-06-20 10:34:24 +08:00
检查 PYTHONPATH 环境变量,检查~/.local/

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

以后请一定注意。

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

https://www.zhihu.com/question/21725432/answer/19155917
lshore
2016-06-20 10:49:35 +08:00
@Livid 好的
lshore
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 的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/286942

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX