ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A answers.ros.org
Ask Your Question
0

Unable to import python script from a second package

asked 2017-03-24 17:45:23 -0600

I am attempting to import a python script which is part of a second package. The code for my project is located at https://github.com/Aditya90/zeroborgR... . In the file node_zeroborg_output.py, I am attempting to import the zeroborg_output.zeroborg script which has the ZeroBorg class. When I try running node_zeroborg_outputin the package robot_motion_control, I get the following error

ImportError: No module named zeroborg_support.zeroborg

I am new to ROS, so I might be missing something obvious. Thank you for the help.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
2

answered 2017-03-25 22:22:34 -0600

jayess gravatar image

updated 2017-12-04 20:08:19 -0600

From the Python docs

When a module named spam is imported, the interpreter first searches for a built-in module with that name. If not found, it then searches for a file named spam.py in a list of directories given by the variable sys.path. sys.path is initialized from these locations:

  • the directory containing the input script (or the current directory).
  • PYTHONPATH (a list of directory names, with the same syntax as the shell variable PATH).
  • the installation-dependent default.

After initialization, Python programs can modify sys.path. The directory containing the script being run is placed at the beginning of the search path, ahead of the standard library path. This means that scripts in that directory will be loaded instead of modules of the same name in the library directory. This is an error unless the replacement is intended. See section Standard Modules for more information.

In other words, the Python interpreter doesn't know where to look for your module. It looks in the directory in which the calling file lives (your robot_motion_control package), then after it doesn't find it there then it looks in your PYTHONPATH, then the installation-dependent default. The zeroborg_support package is in none of these paths. Therefore, it throws an ImportError saying it can't find the module that you're trying to import.

Checkout the catkin docs to see how to install Python scripts and modules.

edit flag offensive delete link more

Comments

1

Okay, thanks a lot for the help, I was able to figure it out based on that. I got confused earlier owing to the lack of requiring those steps in the initial package I made.

adi_darwin gravatar imageadi_darwin ( 2017-03-26 21:14:55 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2017-03-24 17:45:23 -0600

Seen: 309 times

Last updated: Dec 04 '17