繁体   English   中英

在 ubuntu 上将 python3.4 升级到 python3.6 会破坏 pip

[英]Upgrading python3.4 to python3.6 on ubuntu breaks pip

在我目前拥有 python3.4 后,我试图在我的机器上安装 python3.6。 但是,安装后尝试在 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'

互联网上有几条关于遇到该错误的评论,但是,没有一条包含任何实际的解决建议。 有谁知道我该如何解决这个问题?

我设法在没有从源代码安装任何东西的情况下解决了它。 这是我所做的:

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

     $ 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)

  1. 然后升级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
  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 步之后应该没问题。

有同样的问题。 从源代码安装 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 版本变得更加容易。 试一试!

我无法通过运行解决它

python3 get-pip.py

或者

pip3 install --upgrade

因为在那里我已经遇到了 pkg_resources.py 的问题。 同样从 Ubuntu 重新安装 python3-setuptools 包也没有帮助,因为这似乎仍然安装了最初与 Ubuntu 系统一起安装的版本(在我的情况下为 3.4),但我可以通过手动安装 setuptools 来解决它

wget https://bootstrap.pypa.io/ez_setup.py -O - | python3

注意:python3 指向我的新 python 版本 3.6。 如果您不是这种情况,那么您需要运行

wget https://bootstrap.pypa.io/ez_setup.py -O - | python3.6

我在我的 Ubuntu 14.04 服务器上用 3.6 替换了 Python 3.4,我遇到了同样的问题。 就我而言,原因似乎是一个古老的系统 pip:

$ 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

我遇到了同样的问题。 我的系统上似乎有 2 个版本的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

您可以使用此命令解决此错误。 它将更新您的设置工具

python -m ensurepip --upgrade

我终于通过运行解决了这个问题:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3.6 get-pip.py --force-reinstall

在此之后,我可以安装 python3.6 特定的软件包:

python3.6 -m pip install <packagename>

好吧,我似乎遇到了类似的问题,但是为了通过pipdistribute安装为依赖项。

我设法以这种方式安装依赖项(在 env 下):

 easy_install distribute==0.7.3

我遇到的一个错误:

File "/tmp/pip-build-lvtkw8zs/distribute/pkg_resources.py", line 1518, in <module>
    register_loader_type(importlib_bootstrap.SourceFileLoader, DefaultProvider)
AttributeError: module 'importlib._bootstrap' has no attribute 'SourceFileLoader'
 ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-lvtkw8zs/distribute/

只需在此处下载文件get-pip.py并使用以下命令:

sudo python3 get-pip.py

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM