Fitz999 发表于 2014-11-21 18:05

请教:怎样在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下的模块呢?

谢谢!

tomer 发表于 2014-11-21 21:41

你把那几个模块拷贝过去行吗?

aswjh 发表于 2014-11-23 10:14

在你的程序中,把python2.6的模块路径添加到sys.path就可以,
或者在python2.7的site-package下加一个xxx.pth文件,里面写上模块路径也行

shreychen 发表于 2014-11-24 09:05

做一个软连接也可以

Fitz999 发表于 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是什么呢?

谢谢!

j_cle 发表于 2014-12-20 01:40

赞成三楼的做法@3楼

aswjh 发表于 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能否成功.

   

wenhq 发表于 2014-12-20 09:50

修改系统环境变量PYTHONPATH

wenhq 发表于 2014-12-20 09:50

修改系统环境变量PYTHONPATH

bskay 发表于 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 ./

页: [1] 2
查看完整版本: 请教:怎样在Linux环境下改变python的模块路径?