[英]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'
互联网上有几条关于遇到该错误的评论,但是,没有一条包含任何实际的解决建议。 有谁知道我该如何解决这个问题?
我设法在没有从源代码安装任何东西的情况下解决了它。 这是我所做的:
首先,为 Python3.x 安装pip
(因为一些奇怪的原因我没有它......)
$ sudo apt-get install python3-pip
这是旧版本...
$ pip3 --version pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.4)
...所以将其升级到最新版本
$ 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 步之后应该没问题。
有同样的问题。 从源代码安装 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>
好吧,我似乎遇到了类似的问题,但是为了通过pip
将distribute
安装为依赖项。
我设法以这种方式安装依赖项(在 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.