Ubuntu Oneiric 11.10版本中的两个Python版本冲突问题:ImportError:无模块
我使用makeinstall而不是altinstall安装了python2.7.5 以前是2.7.2+ 现在,当我运行python时,它给出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之前安装了它 解决办法是什么?我应该卸载整
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
可能不是必需的,但make脚本将尝试更改sudo
目录中的文件/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/"