Odm: Running ./start-dev-env.sh throws multiple Import errors

Created on 3 Jun 2020  路  12Comments  路  Source: OpenDroneMap/ODM

How did you install OpenDroneMap?

I followed the steps in https://github.com/OpenDroneMap/ODM#developers, i.e.

  • git clone https://github.com/OpenDroneMap/ODM.git
  • cd to cloned dir
  • DATA=/path/to/datasets ./start-dev-env.sh

What's your operating system?

OS: Ubuntu 18.04

What is the problem?

When executing the last step described under https://github.com/OpenDroneMap/ODM#developers (i.e. ./run.sh --project-path /datasets mydataset) I receive the following error message:
ImportError: No module named cv2

I am able to fix this problem by manually installing OpenCV, i.e.

  • detaching from the container with CTRL-p CTRL-q
  • logging in as root with docker exec -it <container_id> bash
  • running apt-get install python-opencv
  • detaching from the container with CTRL-p CTRL-q

When I attach to the container again with docker attach <container_id> and execute (again) ./run.sh --project-path /datasets mydataset I receive:
ImportError: No module named opensfm.large.
Thus, I think something went wrong with the installation process.

Here is the log of DATA=/path/to/datasets ./start-dev-env.sh

Starting development environment...
Datasets path: /home/bullin/Desktop/empty
NodeODM port: 3000
QT Creator: NO
access control disabled, clients can connect from any host
Adding seb to /etc/passwd
Adding seb to /etc/group
su: Authentication failure
(Ignored)
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell

###################################
ODM Dev Environment Ready. Hack on!
###################################

What should be the expected behavior?

Creating the same/similar results as executing
docker run -ti --rm -v /datasets:/datasets opendronemap/odm --project-path /datasets project
as described under https://github.com/OpenDroneMap/ODM#quickstart

How can we reproduce this?

Follow the steps at https://github.com/OpenDroneMap/ODM#developers

possible bug

All 12 comments

Mm, really strange; are you using the opendronemap/nodeodm docker image?

Side note: The second last line of start-dev-env.sh contains
docker run -ti --entrypoint bash --name odmdev -v $(pwd):/code -v "$DATA":/datasets -p $PORT:3000 --privileged -e DISPLAY -e LANG=C.UTF-8 -e LC_ALL=C.UTF-8 -v="/tmp/.X11-unix:/tmp/.X11-unix:rw" -v="$HOME/.odm-dev-home:/home/$USER" opendronemap/nodeodm -c "/code/start-dev-env.sh --setup $USER $USER_ID $GROUP_ID $QTC".

Note the docker image: opendronemap/nodeodm.

That looks a bit strange, since https://github.com/OpenDroneMap/ODM#quickstart uses opendronemap/odm.
Does that still make sense?

Using opendronemap/nodeodm is expected (it's built from opendronemap/odm). The opencv error usually shows up if the PYTHONPATH is not properly set to point to the OpenSfM directory (https://github.com/OpenDroneMap/ODM/blob/master/Dockerfile#L69).

Do I have to set that path by hand?

Btw: /code/SuperBuild in the docker container contains only a CMakeLists.txt file and a cmake folder.

Did I miss some steps maybe?

Ah, sorry, I think you need to issue:

bash configure.sh reinstall

From the dev environment. I think this is missing from the README (ups! Could you open a PR?).

I'll check, if it works and open a PR

Just to avoid any confusion:
I've now deleted all docker containers with docker rm -vf $(docker ps -a -q) and images with docker rmi -f $(docker images -a -q)

And next I should execute
(odmdev) [user:/code] master+* 卤 bash configure.sh reinstall
before
(odmdev) [user:/code] master+* 卤 ./run.sh --project-path /datasets mydataset?

Correct!

Nice, that worked.
Just one more question: Is it possible to change the data path set with
DATA=/path/to/datasets ./start-dev-env.sh
after executing (odmdev) [user:/code] master+* 卤 bash configure.sh reinstall?
If not, we could add an additional note to the PR.

Mm, probably not; it involves mounting a docker volume, which requires the container to be restarted.

Note that you need to execute the bash configure.sh reinstall only the first time; the second time you launch the start-dev-env.sh script this is not needed.

Was this page helpful?
0 / 5 - 0 ratings