2017-03-02 470 views
18

我试图在我的机器上安装python3.6后,我目前有python3.4。然而,安装后尝试下python3.6运行pip给我的错误:在ubuntu中将python3.4升级到python3.6中断pip

Traceback (most recent call last): 
    File "pip3", line 7, in <module> 
    from pip import main 
    File "/usr/lib/python3/dist-packages/pip/__init__.py", line 59, in <module> 
    from pip.log import logger 
    File "/usr/lib/python3/dist-packages/pip/log.py", line 9, in <module> 
    import colorama, pkg_resources 
    File "/usr/lib/python3/dist-packages/pkg_resources.py", line 1520, in <module> 
    register_loader_type(importlib_bootstrap.SourceFileLoader, DefaultProvider) 
AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader' 
Error in sys.excepthook: 
Traceback (most recent call last): 
    File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook 
    from apport.fileutils import likely_packaged, get_recent_crashes 
    File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module> 
    from apport.report import Report 
    File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module> 
    import apport.fileutils 
    File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module> 
    from apport.packaging_impl import impl as packaging 
    File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 20, in <module> 
    import apt 
    File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module> 
    import apt_pkg 
ModuleNotFoundError: No module named 'apt_pkg' 

Original exception was: 
Traceback (most recent call last): 
    File "pip3", line 7, in <module> 
    from pip import main 
    File "/usr/lib/python3/dist-packages/pip/__init__.py", line 59, in <module> 
    from pip.log import logger 
    File "/usr/lib/python3/dist-packages/pip/log.py", line 9, in <module> 
    import colorama, pkg_resources 
    File "/usr/lib/python3/dist-packages/pkg_resources.py", line 1520, in <module> 
    register_loader_type(importlib_bootstrap.SourceFileLoader, DefaultProvider) 
AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader' 

大约有所遇到的错误在互联网上的一些意见,但是,他们没有包含任何实际的解决方案建议。有没有人有任何想法我可以解决这个问题?

+0

没有一个解决方案,但我建议使用pyenv管理在一台机器不同的Python安装。 – Mephy

+0

执行此操作:'pip install -U pip setuptools' – surfer190

回答

8

有同样的问题。从源代码安装python帮助。

# Remove existing python 3.6 if installed with apt 
$ sudo apt-get autoremove python3.6 

# Get the source 
$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz 
$ tar xvf Python-3.6.1.tar.xz 
$ cd Python-3.6.1 

# Configure and install 
$ sudo ./configure 
$ sudo make altinstall 

# Success! 
$ pip3.6 -V 
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6) 

编辑:我自发现pyenv。使安装和管理不同的python版本变得更容易。试一试!

+3

问题是,使用'sudo make install'(或'altinstall'或类似的东西),您最终会复制一些没有人保留轨迹的文件 - 可能更复杂将来升级或卸载。我建议考虑使用['checkinstall'](https://help.ubuntu.com/community/CheckInstall)。 – drdaeman

+0

@drdaeman谢谢,这是很好的知道!但为了简单起见,我想留下答案。你怎么看?另外,apt版本希望能够得到更新,这将变得过时。 – Igonato

+1

我想我的评论在这里就足够了。毕竟,这实际上是为你工作的。只是想警告,在任何软件包管理之外安装的东西可能会在稍后的时间(例如,如果有东西安装'python3.6'作为apt/dpkg依赖项) – drdaeman

14

我设法解决它没有安装任何东西来源。 这里就是我所做的:

  1. 首先,安装pip为Python3.x(一些奇怪的原因,我没有它...)

    $ sudo apt-get install python3-pip 
    

    这是一个旧版本.. 。

    $ pip3 --version 
    pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.4) 
    
  2. ...所以升级其最新

    $ sudo pip3 install --upgrade pip 
    

    现在好多了

    $ sudo pip3 --version 
    pip 9.0.1 from /usr/local/lib/python3.4/dist-packages (python 3.4) 
    

  • 然后再升级virtualenvvwrapper

    $ sudo pip3 install --upgrade virtualenvwrapper 
    # ... 
    Successfully installed pbr-3.0.1 six-1.10.0 stevedore-1.22.0 virtualenv-15.1.0 virtualenv-clone-0.2.6 virtualenvwrapper-4.7.2 
    
  • 现在创建一个新的virtualenv作品:

    $ mkvirtualenv -p `which python3.6` <VIRTUALENV_NAME> 
    

    pip也可以工作:

    $ pip install django 
    # ... 
    Successfully installed django-1.11.2 pytz-2017.2 
    
    $ pip freeze 
    Django==1.11.2 
    pytz==2017.2 
    
  • 注:现在我意识到这不是你问的有点多,但(不知道确切位置,你失败了)我想你应该确定步骤之后2.

    +0

    不适用于我的,我已经安装了python2.7,python 3.4 。 @Igonato的答案适用于我。 – MeadowMuffins

    +0

    升级pip3解决了我的问题。 – zixia

    +0

    适合我,谢谢。我发现尝试激活由此产生的virtualenv导致'权限被拒绝'。我不相信这与原始问题有任何关系,但我只是提到它的完整性。 – glaucon

    -2

    只需下载该文件get-pip.pyhere和使用这个命令:

    sudo python3 get-pip.py 
    
    1

    我在Ubuntu 14.04服务器上用3.6替换了Python 3.4,并且遇到了同样的问题。在我的情况下,原因似乎是一个古老的系统点:

    $ pip --version 
    pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7) 
    

    我从来没有安装python3-pip。相反,我解决了如下错误:

    $ sudo pip install --upgrade pip 
    $ sudo pip install --upgrade virtualenv 
    
    0

    我有同样的问题。看来我的系统上有两个版本的pkg_resources

    /usr/local/lib/python3.6/site-packages/pkg_resources.py

    /usr/lib/python3.6/site-packages/pkg_resources/__init__.py

    移动旧版本,所以我的系统会发现新版本的固定对我来说。

    mv /usr/local/lib/python3.6/site-packages/pkg_resources.py /usr/local/lib/python3.6/site-packages/pkg_resources.py.back