1

我使用 make install 而不是 altinstall 安装了 python 2.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

和:

/usr/local/bin$ ls -l
total 1776
-rwxrwxr-x 1 root root     101 Jul 17 20:17 2to3
-r-xr-xr-x 1 root root    7223 Mar 31 20:47 config_data
-rwxr-xr-x 1 root root     299 Jul 18 20:53 easy_install
-rwxr-xr-x 1 root root     307 Jul 18 20:53 easy_install-2.7
-rwxrwxr-x 1 root root      99 Jul 17 20:17 idle
-r-xr-xr-x 1 root root    3910 Mar 31 20:47 json_pp
-r-xr-xr-x 1 root root     487 Mar 31 20:47 package-stash-conflicts
-rwxr-xr-x 1 root root     281 Jul 17 19:51 pip
-rwxr-xr-x 1 root root     289 Jul 17 19:51 pip-2.7
-rwxrwxr-x 1 root root      84 Jul 17 20:17 pydoc
lrwxrwxrwx 1 root root       7 Jul 18 23:04 python -> python2
lrwxrwxrwx 1 root root      14 Jul 18 23:04 python-config -> python2-config
lrwxrwxrwx 1 root root       9 Jul 18 23:04 python2 -> python2.7
lrwxrwxrwx 1 root root      16 Jul 18 23:04 python2-config -> python2.7-config
-rwxr-xr-x 1 root root 1737376 Jul 18 23:03 python2.7
-rwxr-xr-x 1 root root    1674 Jul 18 23:04 python2.7-config
-rwxrwxr-x 1 root root   18547 Jul 17 20:17 smtpd.py
-rwxr-xr-x 1 root root     316 Jul 18 21:10 virtualenv
-rwxr-xr-x 1 root root     324 Jul 18 21:10 virtualenv-2.7

重新安装它会解决在 ubuntu 中获取和运行默认 2.7.2+ 的问题吗?:https ://launchpad.net/ubuntu/oneiric/+source/python-defaults/2.7.2-7ubuntu2

*事先更新*

现在我可以从 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
>>>

检查 python 的版本后,它在本地运行,冲突问题:

me:~$ python
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.
>>> exit()
me:~$ sudo python
[sudo] password for me:
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.
>>> exit()
me:~$ which python
/usr/local/bin/python
me:~$ sudo which python
/usr/local/bin/python
me:~$ sudo which python2.7
/usr/local/bin/python2.7
me:~$ which python2.7
/usr/local/bin/python2.7

我认为它的运行方式相同。接着..

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 呢?!

4

3 回答 3

2

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

 ./configure --prefix=/scratch/bin/
 make
 sudo make install

然后每次你运行一个你指定的新终端

export PATH="$PATH:/scratch/bin/"

告诉Python的安装目录在哪里

这样你就可以使用任意数量的蟒蛇

于 2015-11-30T17:44:27.260 回答
0

您是使用 apt-get 安装它还是从源代码构建它?

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

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

在你的 python 源目录中。最后一个命令,除其他外,将 python 复制到/usr/目录。如果你想把它安装在其他地方,你必须通过--path=XXX(如果我没记错的话)到./configure.

于 2013-07-17T18:03:39.417 回答
0

pip是一个 Python 程序。从命令行运行pip时,它使用特定的 Python 可执行文件来运行程序。将在Python 可执行文件可以找到它们pip位置安装模块。

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

键入which pip并查看文件中的第一行以查看它链接到哪个 python 可执行文件。

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

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

如果您全局安装 pip,请注意该行

python get-pip.py

或者

python setup.py install

您在此行中使用的 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
于 2013-07-18T10:38:08.903 回答