Ubuntu Oneiric 11.10版本中的两个Python版本冲突问题:ImportError:无模块

Ubuntu Oneiric 11.10版本中的两个Python版本冲突问题:ImportError:无模块,python,python-2.7,ubuntu-11.10,Python,Python 2.7,Ubuntu 11.10,我使用makeinstall而不是altinstall安装了python2.7.5 以前是2.7.2+ 现在,当我运行python时,它给出 ImportError: cannot import name MAXREPEAT 我知道这里已经有相关的条目了。但是我没有安装virtualenv,我以前也没有安装过 如果我运行python2.7 它运行得很好。 现在,当我试图导入一个像mysqldb这样的库时,它说这个模块不存在。 我在安装python2.7之前安装了它 解决办法是什么?我应该卸载整

我使用makeinstall而不是altinstall安装了python2.7.5

以前是2.7.2+

现在,当我运行python时,它给出

ImportError: cannot import name MAXREPEAT
我知道这里已经有相关的条目了。但是我没有安装virtualenv,我以前也没有安装过

如果我运行
python2.7
它运行得很好。 现在,当我试图导入一个像mysqldb这样的库时,它说这个模块不存在。 我在安装python2.7之前安装了它

解决办法是什么?我应该卸载整个python吗?或者更确切地说,我应该如何仅卸载python2.7.5,还是保留它?如果我保留这些,那么如何导入这些模块

**最新更新**

me@me:/usr/local/bin$ dir python2*
python2  python2-config  python2.7  python2.7-config
以及:

重新安装该软件是否能解决在ubuntu中恢复并运行默认2.7.2+的问题

*先前更新*

me@me:/usr/local/bin$ dir python2*
python2  python2-config  python2.7  python2.7-config
现在我可以从bash运行python了

这是一个新问题。我使用pip安装的每个模块都是如此

可以导入lib中的现有模块,但不能导入新安装的模块:

me:~$ sudo pip install requests
Downloading/unpacking requests
  Downloading requests-1.2.3.tar.gz (348kB): 348kB downloaded
  Running setup.py egg_info for package requests

Installing collected packages: requests
  Running setup.py install for requests

Successfully installed requests
Cleaning up...
me:~$ python -i
Python 2.7.5 (default, Jul 17 2013, 20:16:12)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named requests
>>>
我认为它运行相同。然后

me:/usr/local/bin$ dir python2.7
python2.7
me:/usr/local/bin$ cd /usr/bin
me:/usr/bin$ dir python2.7
python2.7

me:/bin$ cd /usr/bin
me:/usr/bin$ dir python
python

me:/usr/local/bin$ dir python
python
me:/usr/local/bin$ dir python2.7
python2.7
同时检查以下各项:

~$ which pip
/usr/local/bin/pip
好的,现在我安装了virtualenv 这就是我所做的

(foldername)me@me:~/caller$ sudo pip install requests
Requirement already satisfied (use --upgrade to upgrade): requests in /usr/local/lib/python2.7/dist-packages
Cleaning up...
(foldername)me@me:~/caller$ python -i
Python 2.7.2+ (default, Jul 20 2012, 22:15:08)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
现在我们可以看到2.7.2+又回来了!那么现在发生了什么?? 怎么了


不建议从linux卸载较旧的python。那么,我如何在2.7.5而不是2.7.2+的情况下运行virtualenv呢

您是否使用apt get或从源代码构建安装了它

如果是从源代码生成的,您确定安装已成功完成吗?通常,为了从源代码构建Python,必须执行以下步骤

  • /configure
  • make
  • sudo-make-install
    sudo
    可能不是必需的,但make脚本将尝试更改
    /usr/
    目录中的文件

在python源代码目录中。最后一个命令将python复制到
/usr/
目录中。如果要在其他地方安装它,必须传递
--path=XXX
(如果我没有弄错的话)
/configure
pip
是一个Python程序。当您从命令行运行
pip
时,它使用特定的Python可执行文件来运行该程序。
pip
将在Python可执行文件可以找到模块的位置安装模块

当您运行
sudopip install some_package
时,操作系统会查看以确定要运行的Python可执行文件

键入
哪个pip
,然后查看文件中的第一行,查看它链接到哪个python可执行文件

要为新的python2.7.5安装软件包,您可以选择或只运行
/usr/local/bin/python pip…
,但我认为管理多个python安装的最简单方法是使用

如果您使用virtualenv(我强烈推荐),那么会自动安装一个新的
pip
,因为它是它的一个依赖项。 如果你走这条路,我建议你也安装

如果全局安装pip

在这一行中使用的python可执行文件设置该版本的pip和该版本的python之间的“链接”


如何使用checkinstall删除定制的Python:

sudo apt-get install libsqlite3-dev libgdbm-dev liblzma-dev checkinstall
sudo apt-get build-dep python

http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
tar xvjf Python-2.7.5.tar.bz2
cd Python-2.7.5
# inspect the options
./configure --help  
./configure
make
make test
sudo checkinstall -D --fstrans=no make install

# Accept the default answers EXCEPT that you MUST change the name to something
# other than python. That way, the name of your custom package does not conflict
# with the name of Ubuntu's "python" package

        Should I create a default set of package docs?  [y]: 
        Enter a number to change any of them or press ENTER to continue: 2
        Enter new name: 
        >> python275

        Copying files to the temporary directory...OK
        # wait, wait, wait...

# python2.7.5 is now installed in /usr/local/bin
# remove it with:
sudo dpkg -r python275

安装python时,请使用以下步骤
使用前缀指定安装目录

 ./configure --prefix=/scratch/bin/
 make
 sudo make install
然后每次你运行一个你指定的新终端

export PATH="$PATH:/scratch/bin/"
告诉Python的安装目录在哪里


这样你就可以使用任意数量的python了,就像我说的那样,make install就是我做的。在这之前,所有的步骤都是你说的。是的,但我没有使用--path=XXX或/usr,我担心是这导致它驻留在python旁边。现在有python和python2.7了。在shell中运行
python
之后,你会立即得到它吗?好的,现在有一个更新。python正在运行,但问题在于导入模块。检查主要问题的更新尝试检查
python
sudo python
是否指向与
which python
sudo which python
相同的二进制文件。如果不是,这就是您的pip问题的原因-
sudo pip install
将包安装到全局python中,同时
python
启动您的本地副本我想如果我卸载两个python并重新安装2.7.5,它会解决我的问题吗?这是您的帖子对的:我应该继续吗?它给了我:sudo dpkg-r python dpkg:依赖性问题阻止删除python:(依赖项列表…)最后:处理过程中遇到错误:pythonpython_2.7.5-1_amd64.deb这是创建的包。我已经添加了有关如何使用checkinstall删除自定义Python的分步说明。请注意,您必须将包的名称更改为除
Python
以外的其他名称,这样checkinstall包的名称将不会更改与名为
python
的Ubuntu包冲突。这样,当您运行
sudo dpkg-r python275
时,Ubuntu不会认为您要求它删除系统包(eek!)
sudo apt-get install libsqlite3-dev libgdbm-dev liblzma-dev checkinstall
sudo apt-get build-dep python

http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
tar xvjf Python-2.7.5.tar.bz2
cd Python-2.7.5
# inspect the options
./configure --help  
./configure
make
make test
sudo checkinstall -D --fstrans=no make install

# Accept the default answers EXCEPT that you MUST change the name to something
# other than python. That way, the name of your custom package does not conflict
# with the name of Ubuntu's "python" package

        Should I create a default set of package docs?  [y]: 
        Enter a number to change any of them or press ENTER to continue: 2
        Enter new name: 
        >> python275

        Copying files to the temporary directory...OK
        # wait, wait, wait...

# python2.7.5 is now installed in /usr/local/bin
# remove it with:
sudo dpkg -r python275
 ./configure --prefix=/scratch/bin/
 make
 sudo make install
export PATH="$PATH:/scratch/bin/"