python ros导入自定义包的问题
1、创建要定义的模块
cd scripts
touch hello.py
hello.py
#! /usr/bin/env python3
def print_test():
print("---------------")
2、在功能包下创建setup.py文件
from distutils.core import setup
from catkin_pkg.python_setup import generate_distutils_setup
d = generate_distutils_setup(
packages=['py_pkg_1'],
package_dir={'': 'src'}
)
setup(**d)
- packages代表你想要安装的python包
- package_dir描述的是python包的存放路径,这个必须得写否则你的python包只能放在setup.py的同级目录
- setup(**d)其实就是调用distutils包的setup模块
3、cmakelist中添加
catkin_python_setup()
这一行是告诉catkin编译工具这里面有python的包要安装,这样catkin在编译时就会在这个功能包的根目录下自动寻找setup.py文件并执行了。
注意:catkin_python_setup()要放到下面代码之前
generate_messages(
DEPENDENCIES
std_msgs
)
4、编译
catkin_make
5、可以随便导入包了
此外还由另外一种方法:其他方式就是将路径配置在PYTHONPATH当中,或者在python文件中通过sys.path.insert等方式加入搜索路径,显然这些方法都不是最好的方法,代码需要在移植后能保证一定的健壮性。故不在这说明这两种方法。