文章目录
系统版本:ubuntu16.04
更新python3.5到python3.7
下载
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc2.tgz
解压
tar zxvf Python-3.7.1rc2.tgz
cd Python-3.7.1rc2
编译
./configure
sudo make
sudo make install
先找的python3.7解释器位置,一般是
/usr/local/bin/python3.7
删除原来的软连接
rm -rf /usr/bin/python3
rm -rf /usr/bin/pip3
添加python3的软链接
ln -s /usr/local/bin/python3.7 /usr/bin/python3
#添加 pip3 的软链接
ln -s /usr/local/bin/pip3.7 /usr/bin/pip3
问题备忘
问题一: 报错ModuleNotFoundError: No module named ‘_ctypes’
解决办法
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev
问题二: zipimport.ZipImportError: can’t decompress data; zlib not available
解决方法 sudo apt-get install zlib
问题三: 出现locations that require TLS/SSL异常处理方法
sudo apt-get install gcc libffi-devel zlib* openssl-devel
然后重新编辑和安装python7即可
创建虚拟环境,可以运行python3的同时兼容python2
以下内容在Ubuntu 16.04 x64和ROS kinetic中测试通过
事实上,只要在.py文件加上python3的shebang,rosrun的时候就会自动调用相应的解释器了:
#!/usr/bin/env python3
但是,在安装ros-kinetic-desktop-full的时候,也并没有安装python3相关的package,所以需要手动安装。
创建virtualenv环境
sudo pip install virtualenv
# 我在这使用的是Python3.6rc2,指向系统已安装的python3也可以。
virtualenv -p /usr/bin/python3 venv
source venv/bin/activate
python -V
# Python 3.6.0rc2
virtualenv -p /usr/bin/python3 venv
这个命令建立了一个venv文件夹,把他放到ROS工作空间去,用的时候source一下就可以了
如下图所示
问题:执行上面的命令是可能会遇到的问题
问题一:python ModuleNotFoundError : ‘CommandNotFound’
解决办法入下:
Check /usr/lib/command-not-found file, it is trying to find module
CommandNotFound, which is NOT shipped with python3.7 but DOES with
Ubuntu under directory /usr/lib/python3/dist-packages. What we need to
do is adding the directory to python import path:
vi .bashrc (or .profile) add line
export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/site-packages:/usr/lib/python3/dist-packages
Pay attention that you may need to change the
/usr/local/lib/python3.7/site-packages to your own directory. exit
and source .bashrc (or .profile)
问题二:No module named’lsb_release’
解决入下:
python3.7安装后提示
No module named’lsb_release’
修改/usr/bin/lsb_release
#!/usr/bin/python3.5m -ES
NOTE
source ros_test/devel/setup.zsh
# 如没有使用virtualenv,下一语句则跳过
source rosenv/bin/activate
rosrun py3test pytest.py//-如果要兼容python2,此语句不要执行
需要注意的是,即使使用的virtualenv中,python指向的是python3,但是只要不在.py文件中添加python3的shebang,rosrun还是会调用python2的。这样可以很方便地兼容原来Python2的Package。