免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11063 | 回复: 10
打印 上一主题 下一主题

请教:怎样在Linux环境下改变python的模块路径? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-11-21 18:05 |只看该作者 |倒序浏览
我实验室用的是64-bit Centos Linux系统,我平时运行的python版本为2.7。但是我们也有一个2.6版本的只不过没人用。

我需要在python里import这两个非常常用的模块:numpy和matplotlib,大家应该都听说过。但是由于种种原因,它们被安装在了2.6版本的python下面的site-package文件夹里;我平时用的2.7版本的反而没有这两个模块。

我想要不直接从2.7退回2.6算了,但是又怕改来改去弄出新的问题。

请问:有没有办法让我在运行的2.7版本的python时,能够import在python 2.6 site-package下的模块呢?

谢谢!

论坛徽章:
3
天秤座
日期:2014-10-29 11:37:572015元宵节徽章
日期:2015-03-06 15:50:39NBA常规赛纪念章
日期:2015-05-04 22:32:03
2 [报告]
发表于 2014-11-21 21:41 |只看该作者
你把那几个模块拷贝过去行吗?

论坛徽章:
0
3 [报告]
发表于 2014-11-23 10:14 |只看该作者
在你的程序中,把python2.6的模块路径添加到sys.path就可以,
或者在python2.7的site-package下加一个xxx.pth文件,里面写上模块路径也行

论坛徽章:
1
2015七夕节徽章
日期:2015-08-21 17:58:43
4 [报告]
发表于 2014-11-24 09:05 |只看该作者
做一个软连接也可以

论坛徽章:
0
5 [报告]
发表于 2014-12-15 13:32 |只看该作者
回复 3# aswjh


谢谢!

我们实验室的python2.7是安装在/usr/local下的,而python2.6是安装在/use/lib64下的。为了能让python2.7引用装在python2.6下的matplotlib和numpy模块,我已经用sys.path强行把/usr/lib64/python2.6/site-packages加了进去,现在运行sys.path结果如下:

/usr/local/lib/python27.zip
/usr/local/lib/python2.7
/usr/local/lib/python2.7/plat-linux2
/usr/local/lib/python2.7/lib-tk
/usr/local/lib/python2.7/lib-old
/usr/local/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/site-packages
/usr/lib64/python2.6/site-packages

但是当我引用matplotlib和numpy模块时依然报错:

Traceback (most recent call last):
  File "Test.py", line 27, in <module>
    import matplotlib.pyplot as mpl
  File "/usr/lib64/python2.6/site-packages/matplotlib/__init__.py", line 96, in <module>
    import os, re, shutil, subprocess, sys, warnings
  File "/usr/local/lib/python2.7/shutil.py", line 12, in <module>
    import collections
  File "/usr/local/lib/python2.7/collections.py", line 8, in <module>
    from _collections import deque, defaultdict
ImportError: No module named _collections

麻烦你看一下这个错误,是无法读取collections么?这个collections是什么呢?

谢谢!

论坛徽章:
12
2015年亚洲杯之乌兹别克斯坦
日期:2015-04-10 18:29:00狮子座
日期:2016-01-17 15:40:28处女座
日期:2016-01-16 17:36:17巨蟹座
日期:2016-01-16 17:35:48未羊
日期:2015-12-12 16:18:26青铜圣斗士
日期:2015-12-09 01:07:50IT运维版块每日发帖之星
日期:2015-12-05 06:20:00神斗士
日期:2015-12-03 23:13:59IT运维版块每日发帖之星
日期:2015-11-22 06:20:00IT运维版块每日发帖之星
日期:2015-11-08 06:20:00IT运维版块每日发帖之星
日期:2015-10-29 06:20:00IT运维版块每日发帖之星
日期:2016-06-30 06:20:00
6 [报告]
发表于 2014-12-20 01:40 |只看该作者
赞成三楼的做法@3楼

论坛徽章:
0
7 [报告]
发表于 2014-12-20 09:47 |只看该作者
本帖最后由 aswjh 于 2014-12-20 10:57 编辑

回复 5# Fitz999

_collections是c模块,要么在/usr/local/lib/python2.7/lib-dynload下,要么内建到了python里,
试试在2.7里测试一下from _collections import deque, defaultdict能否成功.

   

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每月发帖之星
日期:2015-09-11 19:30:52IT运维版块每周发帖之星
日期:2015-09-11 19:20:31IT运维版块每日发帖之星
日期:2015-08-26 06:20:00每日论坛发贴之星
日期:2015-08-20 06:20:00IT运维版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
8 [报告]
发表于 2014-12-20 09:50 |只看该作者
修改系统环境变量PYTHONPATH

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每月发帖之星
日期:2015-09-11 19:30:52IT运维版块每周发帖之星
日期:2015-09-11 19:20:31IT运维版块每日发帖之星
日期:2015-08-26 06:20:00每日论坛发贴之星
日期:2015-08-20 06:20:00IT运维版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
9 [报告]
发表于 2014-12-20 09:50 |只看该作者
修改系统环境变量PYTHONPATH

论坛徽章:
11
2015年迎新春徽章
日期:2015-03-04 09:55:282017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之辽宁
日期:2016-12-15 10:24:1715-16赛季CBA联赛之佛山
日期:2016-11-30 09:04:2015-16赛季CBA联赛之江苏
日期:2016-04-29 15:56:1215-16赛季CBA联赛之同曦
日期:2016-04-12 13:21:182016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之山东
日期:2016-02-16 11:37:52每日论坛发贴之星
日期:2016-02-07 06:20:00程序设计版块每日发帖之星
日期:2016-02-07 06:20:0015-16赛季CBA联赛之新疆
日期:2018-01-09 16:25:37
10 [报告]
发表于 2014-12-28 16:47 |只看该作者
给你一个pythonic的解决办法,该用户的site-packages目录

>>> import site
>>> site.USER_SITE
'/home/XXXX/.local/lib/python2.7/site-packages'

XXXX@Latitude-E6400:~$ mkdir -p .local/lib/python2.7/site-packages
XXXX@Latitude-E6400:~$ cd .local/lib/python2.7/site-packages
XXXX@Latitude-E6400:~$ ln -s /home/...../要用到.py ./

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP