如何让系统在Ubuntu 12.04上看到新安装的Python 2.7.8(精确)

时间:2014-09-25 15:27:11

标签: python linux python-2.7 ubuntu package-management

摘要:在我的Ubuntu计算机上安装了更新的python之后,有些实用程序无法正常工作。为什么呢?

我对Linux的唯一体验是Ubuntu 12.04,到目前为止我依靠apt-get主要用于安装软件包(即使用./configure&& make&& sudo make install)的经验很少。

更新版本的python似乎不能通过apt-get获得,所以我下载了安装的python 2.7.8和你的典型

./configure && make && sudo make install

现在,我基本上对包管理没有任何了解,所以考虑到这一点......

无论出于何种原因,我必须手动将/ usr / bin中的python符号链接替换为对新二进制文件的适当引用(我认为安装会这样做)。顺便说一句,我的机器上仍然有python 2.7.3。

cd /usr/bin
sudo rm python
ln -s /location/of/new/python python

现在,为了准备写一个完全不同的问题,我想确认我的Ubuntu版本

lsb_release -a

但我得到

Traceback (most recent call last):
  File "/usr/bin/lsb_release", line 26, in <module>
    import lsb_release
ImportError: No module named lsb_release

我感觉这将继续发生许多实用程序,直到我能告诉我的系统以某种方式看到ubuntu安装(apt-get)python模块。

例如,我已经安装了pip并正在工作,但现在如果我输入

pip install lsb_release
Traceback (most recent call last):
  File "/usr/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
ImportError: No module named pkg_resources

是否有一种简单(或不是)方式来解决所有这些依赖性问题?

我现在在安装tk-dev

之后使用新的Python 2.7.8工作(运行)IDLE
sudo apt-get install tk-dev

(之前没有这一步工作)

但如果我通过右键单击并转到IDLE 打开IDLE 的python脚本,则无法看到我的wxPython(wx)库,这些库我也是新建的。我也从终端遇到了这个问题,但根据

解决了这个问题

https://sites.google.com/site/opensourceconstriubtions/ettl-martin-1/tutorials/how-to-solve-following-error-when-starting-a-wxwidgets-application-libwx_gtk2u_adv-3-x-so-0-cannot-open-shared-object-file-no-such-file-or-directory

当我右键单击python文件并转到IDLE时,如何让IDLE看到wx模块?如果我从终端运行IDLE,可以看到wx模块(即import wx正常工作)。

我知道这个问题到处都是,但我不知道从哪里开始。

感谢。

可能相关的其他信息:

which python
/usr/bin/python

python --version
Python 2.7.8

python -m site
sys.path = [
'/usr/lib/python2.7',
'/usr/local/lib/python27.zip',
'/home/jpf/src/Python-2.7.8/Lib',
'/home/jpf/src/Python-2.7.8/Lib/plat-linux2',
'/home/jpf/src/Python-2.7.8/Lib/lib-tk',
'/home/jpf/src/Python-2.7.8/Lib/lib-old',
'/home/jpf/src/Python-2.7.8/build/lib.linux-i686-2.7',
'/home/jpf/.local/lib/python2.7/site-packages',
'/usr/local/lib/python2.7/site-packages',
'/usr/local/lib/python2.7/site-packages/wx-3.0-gtk2',
'/usr/local/lib/python2.7/dist-packages',
'/usr/local/lib/python2.7/dist-packages/wx-2.9.4-gtk2',
]

(这正确安装了两个版本的wxPython。) 但是这里看起来与我不一致...

locate lsb_release.py
/usr/lib/python2.7/dist-packages/lsb_release.py
/usr/lib/python2.7/dist-packages/lsb_release.pyc
/usr/lib/python3/dist-packages/lsb_release.py
/usr/share/pyshared/lsb_release.py

python模块lsb_release的位置是/usr/lib/python2.7/dist-packages,而python似乎是在/usr/local/lib/python2.7/dist-packages中搜索。我做错了什么?

部分答案

开始理解这个问题,正如预期的那样,这是由于我对Linux和Ubuntu如何工作的无知。

当在Ubuntu中,管理员通过sudo apt-get install python-module安装与给定的python相关的 python-module 时,它被放置在/usr/local/lib/pythonX.Y/dist-packages中。当管理员通过相同的方法安装python 程序时,它似乎位于/usr/lib/pythonX.Y/dist-packages中。例如,当我安装pip时,我通过sudo apt-get install python-pip安装。这创建了目录/usr/lib/python2.7/dist-packages/pip。当我使用pip安装xlwt时,创建了一个目录/usr/local/lib/pythonX.Y/dist-packages/xlwt。这可能不是一个严格的规则,但似乎至少python模块,当与apt-get或pip一起安装时都安装在/usr/local/lib/pythonX.Y/dist-packages中。

这与网站套件位置/usr/local/lib/pythonX.Y/site-packages/usr/lib/pythonX.Y/site-packages不存在)形成对比,当管理员手动安装软件包时,会添加软件包正如我对wxPython 3.0所做的那样(参见上面的/usr/local/lib/python2.7/site-packages/wx-3.0-gtk2,与/usr/local/lib/python2.7/dist-packages/wx-2.9.4-gtk2不同,我安装了特殊指令以集成到Ubuntu的软件包管理器中)。

这里描述:

What's the difference between dist-packages and site-packages?

相关的是此处描述的/usr/lib/usr/local/lib之间的区别:

What's the difference between /usr/local/lib/python2.6 and /usr/lib/python2.6?

新安装的Python 2.7.8没有&#34;看到&#34;目录/usr/lib/python2.7/dist-packages/,其中包含必要的模块lsb_release,因为它未设置为通过包管理器(通过apt-get)查看。由于我手动安装(即使用./configure && make && make install),因此只能看到/usr/local/lib/python2.7/

我删除了这个问题,但也许对其他新手有帮助。管理员请随时删除。

0 个答案:

没有答案