在Ubuntu9.10中,usr/lib/中有python2.4、python2.5、python2.6和python3.0目录
只有Python2.6可以工作。
python2.4只有一个lib dynload目录,
python2.5只有lib dynload和site包,
python3.0只有一个dist packages目录。
现在我想知道这背后的想法是什么? 因为当我用./configure,make,make install | altinstall安装python2.5时 这进入了usr/local/lib而不是usr/lib/所以为什么这些目录被添加到ubuntu中,我应该如何安装python来使用它们?
j3ll3,在Ubuntu(或任何基于DPKG的Linux操作系统)中,您可以通过键入
例如,在Ubuntu9.10中
回报
您可以通过键入
也就是说python gdbm为python提供了“GNU dbm数据库支持”。 更有趣的是,如果你输入
您将看到python gdbm安装的所有文件的列表:
看起来这个包安装了3个库,每个版本的python都有一个。
Python2.6是Ubuntu 9.10中python的默认版本,但是也可以安装 Python2.4、2.5和/或3.0。除非这样做,否则只使用/usr/lib/python2.6/lib-dynload/gdbm.so,其他的只是在浪费空间。
由于python2.4、2.5、3.0中不需要的文件并不是很大,包维护人员可能觉得为python的每个版本发布一个包比发布一个包更容易。
但是,除非你知道如何修复将来的apt-get错误,否则我建议不要手动删除Ubuntu中由软件包安装的任何文件。
听起来像是你安装的某个软件包的意外。
使用中的Python版本决定了查找已安装的Python包/模块的搜索位置,Ubuntu 9.10中Python的“系统版本”是2.6,所以实际上所有东西都应该使用这个版本。如果您要安装python2.5包(或者它作为其他东西的依赖项安装),那么它将使用/usr/lib/python2.5/*。尝试运行
which python
和python --version
;同时运行which python2.6
和which python2.5
。据我所知,尽管我完全不确定原因,Debian(Ubuntu的派生源)使用了
dist-packages
命名方案,而不是site-packages
。术语:Python有包,Debian(因此Ubuntu)有包。它们不是同一类的包,尽管个别的Debian包将安装特定的Python包。
对您的问题的简短回答是:当您从源代码安装软件包时,您应该使用软件包“
setup.py
”安装程序自动正确地安装它们。这个安装程序已经知道在哪里正确安装模块,以便Python能够找到它们。要使用,只需使用要与包一起使用的Python解释器调用即可。在
setup.py
的速成课程。首先,使用希望包可用的Python可执行文件运行它。如果要将包与/usr/bin/python2.5
一起使用,则应使用/usr/bin/python2.5
运行setup.py
。其次,转到安装包setup.py
的目录。第三,必须作为根安装,所以将整个tihng作为根安装是最容易的。第四,如果要安装到多个Python解释器,应该对每个解释器运行setup.py
,但是应该在两者之间清除它。所以我要做的是:如果你是手工安装模块。。。你不应该,你应该用它的
setup.py
。(如果您编写了一个新的模块,您应该为它编写一个setup.py
)如果您必须手工安装,您需要通过探索和实验,或者通过调用安装程序调用的同一个库来确定正确的目录,找出每个Python的正确安装目录。安装程序使用distutils
调用distutils.sysconfig.get_python_lib()
;安装程序使用setup_tools
查找setup_tools.command.easy_install.easy_install.INSTALL_SCHEMES[os.name]["install_dir"]
。关于
dist-packages
:今年早些时候,我与Debian的Python包的维护人员进行了一次对话。他在Ubuntu9.04的beta包中实现了这个功能,但是代码有个错误,我绊倒了。我们最后聊了一会儿。IIRCdist-packages
的原因与强迫用户在apt get的不同目录中安装软件包有关。不过,我显然并不真正理解其动机,因为实际上,用户和apt-get仍然安装在同一个目录中。lib-dynload
不是Debian的东西;这是Python自己安装的目录。我相信它只是一个用于实现模块的共享库的目录。我不确定Python是否还在使用它。最后,我不知道你所说的“只有Python2.6能工作”是什么意思。这些命名不同的目录“不起作用”呢?
相关问题 更多 >
编程相关推荐