请教:怎样在Linux环境下改变python的模块路径?
我实验室用的是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下的模块呢?
谢谢! 你把那几个模块拷贝过去行吗? 在你的程序中,把python2.6的模块路径添加到sys.path就可以,
或者在python2.7的site-package下加一个xxx.pth文件,里面写上模块路径也行 做一个软连接也可以 回复 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是什么呢?
谢谢! 赞成三楼的做法@3楼 本帖最后由 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能否成功.
修改系统环境变量PYTHONPATH 修改系统环境变量PYTHONPATH 给你一个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 ./
页:
[1]
2