layabout4233629 / layabout

用来写写自己学习的技术心得,如果对您有帮助,别忘了加“星”
1 stars 0 forks source link

将ubuntu14.04虚拟机的python从2.7.6升级到2.7.9+ #14

Open layabout4233629 opened 4 years ago

layabout4233629 commented 4 years ago

倒腾了一系列恶心的事情:

在虚拟机中编译ROS节点的python代码,首先碰到的是无法import cv2。

于是pip install opencv-python,结果提示Could not find any downloads that satisfy the requirement opencv-python。百度了半天,好像是pip需要升级。

升级pip后继续,发现无法下载cv包的速度超慢,于是换国内清华镜像。

好不容易下载了opencv-python的包,结果提示Cannot uninstall 'numpy'。

于是又去卸载重新强制安装numpy,又提示ERROR: matplotlib 1.3.1 requires tornado, which is not installed.

于是又去安装tornado。结果又提示:ImportError: Tornado requires an up-to-date SSL module. This means Python 2.7.9+ or 3.4+ 。原来虚拟机的python版本是2.7.6的,还要升级到2.7.9+才行。

我擦...网上找了下面这段代码,不知道能不能升级python,先试试吧

sudo add-apt-repository ppa:fkrull/deadsnakes-python2.7
sudo apt-get update
sudo apt-get upgrade

安装过程中又百度学习了一下ppa的知识,发现这个方式可能不太好。 最终使用以下方式:

You can use pyenv:

git clone https://github.com/pyenv/pyenv.git ~/.pyenv git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv Then add

for PyEnv

export PYENV_ROOT="$HOME/.pyenv" export PATH="$HOME/.pyenv/bin:$PATH" export PATH="$HOME/.pyenv/shims:$PATH" eval "$(pyenv init -)" to .bash_profile then you can see the python version you want to install or update:

pyenv install --list want python 2.7.10? you can try: pyenv install 2.7.10

pyenv virtualenv 2.7.10 py2.7.10 #修改了下 Hope it can help you.

理解了下,上面实际用到了pyenv和virtualenv两个工具管理 版本

过程中继续出错(都习惯了) 在升级 six 时遇到无法安装的问题,错误日志如下:

Cannot uninstall 'six'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall. 导致错误的原因:Six issue when installing package

解决方法:

sudo pip install six --upgrade --ignore-installed six

创建某个Python版本的虚拟环境:pyenv virtualenv 如:pyenv virtualenv 2.7.10 project_name-venv Tip:

  1. 创建虚拟环境的时候,所指定的版本号必须是已经安装过的
  2. 'folder_name'这个是根据个人的习惯而命名的。我看很多资料发现大多数人都是'venv-2.7.10'这种方式,我个人习惯是把文件名这样命名'project_name-venv' 切换虚拟环境:pyenv activate 退出虚拟环境:pyenv deactivate 列出当前所有的虚拟环境:pyenv virtualenvs 删除虚拟环境:pyenv virtualenv-delete

查询pyenv版本:pyenv -v 查询python可安装版本:pyenv install -l or pyenv install --list 安装python:pyenv install or pyenv install -v 如:python install 2.7.10 查询已安装Python所有版本:pyenv versions 查询当前使用的Python版本:pyenv version 设置全局python版本:pyenv global 设置当前所在目录的python版本:pyenv local 设置当前所在目标的python shell版本:pyenv shell

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。

而/etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。

~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。

~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

https://github.com/pyenv/pyenv/wiki/common-build-problems 这个网址里提供了一些pyenv使用的问题解决方案。