python dist-packages 和 site-packages

来源:互联网 发布:cxf webservice json 编辑:程序博客网 时间:2024/05/16 07:57

dist-packages 和site-packages在我的ubuntu12上都在/usr/local/lib/python2.7目录下

今天安装django时发现一个奇怪的现象:

我使用 pip install Django==1.8.4安装的django,安装成功,直接在终端使用django-admin也成功,但是进入python:import dnango,却提示no module named django,真的百思不得其解。

查了一番资料后得知原因:

当python import模块的时候,就通过sys.path里面的目录列表下面去查找


我的django安装在dist-packages下面的,但是sys.path里面没有这个目录,当我使用os.sys.path.append将这个目录加入时,能够import了,但是这个随着python的重启就会消失。

然后我发现之前安装的pymysql没啥问题(忘了怎么装的了),然后我发现这个paramiko是安装在site-packages下面的,而sys.path列表里是有site-packages这个目录的

我的解决办法是将site-packages里建一个dist-packages/django的软连接,ok。当然更好的办法应该是将dist-packages加入sys.path


但是问题是这个dist-packages 和site-packages之间有啥不可见人的故事呢?搞得如此麻烦


dist-packages是debian系统及其衍生系统的默认python的模块默认安装目录,如果使用包管理器(如apt-get)安装python的模块,都会安装到/usr/lib/python2.7/dist-packages

而easy_install 和pip都是通过包管理器来安装python模块的,但是他们把安装包安装在/usr/local/lib/python2.7/dist-packages。而通过源(编译安装没试过,不知道)自己手动安装的python是使用site-packages来查找模块,这样做让系统的python模块和用户自己安装的模块分割开来,互不影响


btw: 在我的机子上,系统自带的python安装在/usr/lib/python2.7下面的,而我自己安装的python在/usr/local/lib/python2.7下面,在终端中直接输入python进入的是我自己装的python。



0 0
原创粉丝点击