程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python3 與python2混用操作

編輯:Python

問題:在使用osqp庫編寫MPC程序後,小車坐標需要tf轉換,而tf庫僅能在python2環境下使用,造成了python環境沖突

解決思路:比較安全的思路是,創建一個新的工作空間,配置為python3的環境後,source一下這個工作空間,即可運行雙環境。

1.創建工作空間py3_ws,克隆源碼geometry和geometry2到src中

這裡有一個已經創建好的工作空間:

鏈接:py3_ws
提取碼:pyws

2.安裝python3依賴

sudo apt install python3-catkin-pkg-modules python3-rospkg-modules python3-empy ipython3

3.numpy安裝

pip3 install numpy

4.刪除工作空間中的CMakeLists.txt

因為是在我的Linux系統上弄得,所以CMakeLists.txt裡面的路徑會與你的系統路徑沖突,所以刪除,重新進行編譯

cd py3_ws/src

sudo rm CMakeLists.txt

 5.重新編譯

如果python3的版本是3.5或者其他的,首先要安裝其他版本的python,然後將下面的3.6改為自己的python版本。

catkin_make --cmake-args -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so

 6.source工作空間

source py3_ws/devel/setup.bash

 每次需要進行雙版本混用的時候都要source一下這個工作空間,如果嫌麻煩,可以把這個命令加入到.bashrc文件中。

sudo gedit ~/.bashrc

 在底部加入完整路徑即可

source /home/zhz/gzrobot_ws/devel/setup.bash # 原有工作空間
source /home/zhz/py3_ws/devel/setup.bash # 新建立的工作空間

測試:

我們系統中有原有的工作空間(例:gzrobot_ws),還有一個新創建的工作空間py3_ws,我們只用在前者中進行操作就行了,在寫python文件時,解釋器選擇python3。測試程序如下:

#!/usr/bin/env python3
# -*- coding=utf-8 -*-
import osqp
import rospy
import tf
if __name__ == "__main__":
rospy.init_node('test', anonymous=True)
while not rospy.is_shutdown():
rate = rospy.Rate(1)
br = tf.TransformBroadcaster()
br.sendTransform((0.0, 0.0, 1.0),
tf.transformations.quaternion_from_euler(0, 0, 3.1415926/2),
rospy.Time.now(),'camera','map')
rate.sleep()

完成的功能是調用osqp庫,建立tf坐標轉換,在rviz中觀察攝像頭與地圖間的關系

跑這個程序就好了,結果如下:

 

可以運行python2的tf,也可以運行python3的osqp


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved