2016-11-22 11 views
1

私は現在、私のservice_def.pyファイルにインポートできないどこかで定義した.srvファイルをインポートする際にいくつかの問題があります。なぜそれはできないのですか?このROSインポートsrvメッセージ - 相対インポートのジャンプ問題

. 
├── CMakeLists.txt -> /opt/ros/indigo/share/catkin/cmake/toplevel.cmake 
└── service 
    ├── CMakeLists.txt 
    ├── include 
    │   └── service 
    │    ├── __init__.py 
    │    ├── service_def.py 
    │    └── service_def.pyc 
    ├── package.xml 
    ├── setup.py 
    ├── src 
    │   └── service_node.py 
    └── srv 
     ├── get.srv 
     ├── set.srv 
     └── __init__.py 

service_def.pyは、このような

from ..srv import * 

そして、私のservice_node.pyとして定義されているよう

私はrosnodeとしてそれを作ったが、catkin_workspaceの私のsrcフォルダが見えた私rosrun輸入service_def.py

import service.service_def 

なぜ私は自分のserviをインポートしますかservice_def.pyのceメッセージ

エラーメッセージ:

## ! DO NOT MANUALLY INVOKE THIS setup.py, USE CATKIN INSTEAD 
from distutils.core import setup 
from catkin_pkg.python_setup import generate_distutils_setup 
# fetch values from package.xml 
setup_args = generate_distutils_setup(
packages=['service'], 
package_dir={'': 'include'}, 
) 
setup(**setup_args) 

答えて

0

エラーが言うように、あなたは(すなわち..を使用して)相対インポートをやろうとしている。

[email protected]:~/python_service/src$ rosrun service service_node.py 
Traceback (most recent call last): 
    File "/home/k/python_service/src/service/src/service_node.py", line 5, in <module> 
    import service.service_def 
    File "/home/k/python_service/src/service/include/service/service_def.py", line 1, in <module> 
    from ..srv import * 
ValueError: Attempted relative import beyond toplevel package 

私のsetup.pyは次のようになります。

from ..srv import *service_def.pyfrom service.service_def import *に:代わりに、あなたはすでにあなたが変更することで、直接そのパッケージ名を使用することができ、あなたのsetup.pyファイルにパッケージとしてserviceを設定しているため。

+0

サービスファイルをどのようにインポートしますか? –

+0

問題は 'service_def.py'のインポートです。srvファイルはインポートされません。 –

+0

@CarltonBanksこれはあなたの 'setup.py'がサービスを定義していることを前提としています(これはTracebackによる)、そして' CMakeLists.txt'ではサービスファイル(ROSチュートリアルで指定)を定義しています。このチュートリアル(http://wiki.ros.org/rospy_tutorials/Tutorials/Makefile)を見れば、 'setup.py'がcatkinによってどのように使われているかの例を見ることができます。 –

関連する問題