跳转到主要内容

用于识别Python 2依赖的工具。

项目描述

这是一个检查您的ROS软件包或其依赖项是否依赖于Python 2的工具。

安装

此软件包在Ubuntu和Debian上运行,并且需要在系统中安装一些软件包。

如果默认的python是Python 2(Ubuntu Bionic,Debian Stretch等),请安装这些软件包。

$ sudo apt-get install python-apt
$ sudo apt-get install python-rosdep-modules
$ sudo apt-get install python-catkin-pkg-modules

如果默认的python是Python 3(Ubuntu focal,Debian Buster等),请安装这些软件包。

$ sudo apt-get install python3-apt
$ sudo apt-get install python3-rosdep-modules
$ sudo apt-get install python3-catkin-pkg-modules

然后从PyPI.org安装。

$ pip install py3-ready

如果您想从源代码安装,请创建一个可以访问系统软件包的虚拟环境。

$ cd py3-ready/
# Set up Python 2 virtual environment
$ virtualenv --system-site-packages ssenv2
$ . ssenv2/bin/activate
$ python setup.py develop
$ deactivate
# Set up Python 3 virtual environment
$ python3 venv --system-site-packages ssenv3
$ . ssenv3/bin/activate
$ python setup.py develop

用法

如果软件包依赖于Python 2,所有命令将以代码1退出,如果不依赖则以代码0退出。如果发生任何不可恢复的错误,则退出代码为2。

check-package

此命令检查ROS软件包的任何依赖项是否依赖于python2。命令接受一个ROS软件包的名称。该软件包必须在已源码的工空间中存在。使用–quiet来抑制警告和可读输出。

$ py3-ready check-package catkin
python-argparse did not resolve to an apt package
/opt/ros/melodic/share/catkin depends on python

传递–dot将依赖图输出为DOT格式。

$ py3-ready check-package --quiet --dot catkin
digraph G {
  "catkin%package" -> "python-empy%rosdep"[color=pink];  // build_export_depend
  "python-empy%rosdep" -> "python-empy%apt"[color=orange];  // rosdep
  "python-catkin-pkg%rosdep" -> "python-catkin-pkg%apt"[color=orange];  // rosdep
  "catkin%package" -> "python-mock%rosdep"[color=pink];  // test_depend
  "python-mock%apt" -> "python-funcsigs%apt"[color=blue];  // Depends
  "python:any%apt" -> "python%apt"[color=green];  // virtual
  "python-pbr%apt" -> "python-six%apt"[color=blue];  // Depends
  "google-mock%apt" -> "googletest%apt"[color=blue];  // Depends
  "python-mock%apt" -> "python-pbr%apt"[color=blue];  // Depends
  "python-pbr%apt" -> "python-pkg-resources%apt"[color=blue];  // Depends
  "python-nose%apt" -> "python-pkg-resources%apt"[color=blue];  // Depends
  "catkin%package" -> "python-empy%rosdep"[color=pink];  // build_depend
  "python-docutils%apt" -> "python:any%apt"[color=blue];  // Depends
  "catkin%package" -> "python-catkin-pkg%rosdep"[color=pink];  // build_export_depend
  "python-dateutil%apt" -> "python:any%apt"[color=blue];  // Depends
  "python-nose%apt" -> "python:any%apt"[color=blue];  // Depends
  "python-funcsigs%apt" -> "python:any%apt"[color=blue];  // Depends
  "gtest%rosdep" -> "libgtest-dev%apt"[color=orange];  // rosdep
  "python-catkin-pkg%apt" -> "python-docutils%apt"[color=blue];  // Depends
  "catkin%package" -> "python-catkin-pkg%rosdep"[color=pink];  // build_depend
  "python-docutils%apt" -> "python-roman%apt"[color=blue];  // Depends
  "python-mock%rosdep" -> "python-mock%apt"[color=orange];  // rosdep
  "python-nose%rosdep" -> "python-nose%apt"[color=orange];  // rosdep
  "google-mock%rosdep" -> "google-mock%apt"[color=orange];  // rosdep
  "catkin%package" -> "python-catkin-pkg%rosdep"[color=pink];  // exec_depend
  "python-catkin-pkg-modules%apt" -> "python-pyparsing%apt"[color=blue];  // Depends
  "catkin%package" -> "gtest%rosdep"[color=pink];  // build_export_depend
  "catkin%package" -> "python-nose%rosdep"[color=pink];  // build_export_depend
  "python-six%apt" -> "python:any%apt"[color=blue];  // Depends
  "python-dateutil%apt" -> "python-six%apt"[color=blue];  // Depends
  "python-catkin-pkg%apt" -> "python-pyparsing%apt"[color=blue];  // Depends
  "python-catkin-pkg-modules%apt" -> "python-docutils%apt"[color=blue];  // Depends
  "python-pbr%apt" -> "python:any%apt"[color=blue];  // Depends
  "python-pyparsing%apt" -> "python:any%apt"[color=blue];  // Depends
  "python-catkin-pkg%apt" -> "python:any%apt"[color=blue];  // Depends
  "python-catkin-pkg-modules%apt" -> "python:any%apt"[color=blue];  // Depends
  "python-mock%apt" -> "python-six%apt"[color=blue];  // Depends
  "catkin%package" -> "python-nose%rosdep"[color=pink];  // test_depend
  "python-empy%apt" -> "python%apt"[color=blue];  // Depends
  "python-mock%apt" -> "python:any%apt"[color=blue];  // Depends
  "python-catkin-pkg%apt" -> "python-dateutil%apt"[color=blue];  // Depends
  "python-catkin-pkg%apt" -> "python-catkin-pkg-modules%apt"[color=blue];  // Depends
  "googletest%apt" -> "python:any%apt"[color=blue];  // Depends
  "python-empy%apt" -> "python:any%apt"[color=blue];  // Depends
  "catkin%package" -> "google-mock%rosdep"[color=pink];  // build_export_depend
  "python-catkin-pkg-modules%apt" -> "python-dateutil%apt"[color=blue];  // Depends
  "libgtest-dev%apt" -> "googletest%apt"[color=blue];  // Depends
  "python-pkg-resources%apt" -> "python:any%apt"[color=blue];  // Depends
  "python-roman%apt" -> "python:any%apt"[color=blue];  // Depends

  "python-mock%rosdep"[color=orange,shape=rect][label="python-mock"];  // rosdep
  "python-mock%apt"[label="python-mock"];  // apt
  "python-catkin-pkg-modules%apt"[label="python-catkin-pkg-modules"];  // apt
  "python-pyparsing%apt"[label="python-pyparsing"];  // apt
  "python-catkin-pkg%apt"[label="python-catkin-pkg"];  // apt
  "gtest%rosdep"[color=orange,shape=rect][label="gtest"];  // rosdep
  "python:any%apt"[label="python:any"];  // apt
  "python-dateutil%apt"[label="python-dateutil"];  // apt
  "python-roman%apt"[label="python-roman"];  // apt
  "catkin%package"[color=pink,shape=hexagon][label="catkin"];  // package
  "python-empy%apt"[label="python-empy"];  // apt
  "google-mock%apt"[label="google-mock"];  // apt
  "python-nose%rosdep"[color=orange,shape=rect][label="python-nose"];  // rosdep
  "python-pbr%apt"[label="python-pbr"];  // apt
  "python-pkg-resources%apt"[label="python-pkg-resources"];  // apt
  "python-funcsigs%apt"[label="python-funcsigs"];  // apt
  "python-nose%apt"[label="python-nose"];  // apt
  "python%apt"[label="python"];  // apt
  "google-mock%rosdep"[color=orange,shape=rect][label="google-mock"];  // rosdep
  "python-empy%rosdep"[color=orange,shape=rect][label="python-empy"];  // rosdep
  "python-catkin-pkg%rosdep"[color=orange,shape=rect][label="python-catkin-pkg"];  // rosdep
  "libgtest-dev%apt"[label="libgtest-dev"];  // apt
  "googletest%apt"[label="googletest"];  // apt
  "python-docutils%apt"[label="python-docutils"];  // apt
  "python-six%apt"[label="python-six"];  // apt
}

默认情况下,此命令寻找名为python的deb软件包的依赖项。使用–target来更改此名称。

$ py3-ready check-package --target python3 gazebo_ros 2>/dev/null
/opt/ros/melodic/share/gazebo_ros depends on python3

check-rosdep

此命令使用rosdepapt来检查rosdep密钥是否递归地依赖于python 2。

$ py3-ready check-rosdep python-sip
rosdep key python-sip depends on python

传递–dot将依赖图输出为DOT格式。使用–quiet来抑制警告和可读输出。

$ py3-ready check-rosdep --quiet --dot boost
digraph G {
  "libboost-mpi-python1.65-dev%apt" -> "libboost-mpi-python1.65.1%apt"[color=blue];  // Depends
  "libboost-mpi-python1.65.1%apt" -> "python%apt"[color=blue];  // Depends
  "libboost-all-dev%apt" -> "libboost-mpi-python-dev%apt"[color=blue];  // Depends
  "libboost-mpi-python-dev%apt" -> "libboost-mpi-python1.65-dev%apt"[color=blue];  // Depends
  "libboost-python1.65-dev%apt" -> "python-dev%apt"[color=blue];  // Depends
  "libboost-mpi-python1.65.1%apt" -> "python:any%apt"[color=blue];  // Depends
  "python:any%apt" -> "python%apt"[color=green];  // virtual
  "libboost-python-dev%apt" -> "libboost-python1.65-dev%apt"[color=blue];  // Depends
  "boost%rosdep" -> "libboost-all-dev%apt"[color=orange];  // rosdep
  "python-dev%apt" -> "python%apt"[color=blue];  // Depends
  "libboost-all-dev%apt" -> "libboost-python-dev%apt"[color=blue];  // Depend
  "python%apt"[label="python"];  // apt

  "libboost-mpi-python-dev%apt"[label="libboost-mpi-python-dev"];  // apt
  "boost%rosdep"[color=orange,shape=rect][label="boost"];  // rosdep
  "libboost-python-dev%apt"[label="libboost-python-dev"];  // apt
  "libboost-mpi-python1.65-dev%apt"[label="libboost-mpi-python1.65-dev"];  // apt
  "libboost-python1.65-dev%apt"[label="libboost-python1.65-dev"];  // apt
  "libboost-mpi-python1.65.1%apt"[label="libboost-mpi-python1.65.1"];  // apt
  "python-dev%apt"[label="python-dev"];  // apt
  "python:any%apt"[label="python:any"];  // apt
  "libboost-all-dev%apt"[label="libboost-all-dev"];  // apt
}

默认情况下,此命令寻找名为python的deb软件包的依赖项。使用–target来更改此名称。

$ py3-ready check-rosdep --target python3 python-sip
rosdep key python-sip does not depend on python3

check-apt

此命令使用apt来检查deb软件包是否递归地依赖于python 2。

$ py3-ready check-apt libboost-python-dev
libboost-python-dev depends on python

传递–dot将依赖图输出为DOT格式。使用–quiet来抑制警告和可读输出。

$ py3-ready check-apt --dot --quiet libboost-all-dev
digraph G {
  "libboost-mpi-python1.65.1%apt" -> "python:any%apt"[color=blue];  // Depends
  "libboost-all-dev%apt" -> "libboost-python-dev%apt"[color=blue];  // Depends
  "libboost-python-dev%apt" -> "libboost-python1.65-dev%apt"[color=blue];  // Depends
  "libboost-python1.65-dev%apt" -> "python-dev%apt"[color=blue];  // Depends
  "python-dev%apt" -> "python%apt"[color=blue];  // Depends
  "libboost-all-dev%apt" -> "libboost-mpi-python-dev%apt"[color=blue];  // Depends
  "libboost-mpi-python1.65-dev%apt" -> "libboost-mpi-python1.65.1%apt"[color=blue];  // Depends
  "libboost-mpi-python1.65.1%apt" -> "python%apt"[color=blue];  // Depends
  "python:any%apt" -> "python%apt"[color=green];  // virtual
  "libboost-mpi-python-dev%apt" -> "libboost-mpi-python1.65-dev%apt"[color=blue];  // Depends

  "libboost-python1.65-dev%apt"[label="libboost-python1.65-dev"];  // apt
  "python-dev%apt"[label="python-dev"];  // apt
  "python:any%apt"[label="python:any"];  // apt
  "python%apt"[label="python"];  // apt
  "libboost-mpi-python-dev%apt"[label="libboost-mpi-python-dev"];  // apt
  "libboost-mpi-python1.65-dev%apt"[label="libboost-mpi-python1.65-dev"];  // apt
  "libboost-python-dev%apt"[label="libboost-python-dev"];  // apt
  "libboost-all-dev%apt"[label="libboost-all-dev"];  // apt
  "libboost-mpi-python1.65.1%apt"[label="libboost-mpi-python1.65.1"];  // apt
}

默认情况下,此命令寻找名为python的deb软件包的依赖项。使用–target来更改此名称。

$ py3-ready check-apt --target python3 python3-apt
python3-apt depends on python3

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。

源代码分发

py3-ready-0.1.0.tar.gz (10.2 kB 查看哈希值)

上传时间 源代码

构建分发

py3_ready-0.1.0-py3-none-any.whl (18.2 kB 查看哈希值)

上传时间 Python 3

py3_ready-0.1.0-py2-none-any.whl (18.2 kB 查看哈希值)

上传时间 Python 2

由以下支持