2017-03-11 5 views
1

Je rencontre un problème lors de la création d'OpenSFM. J'obtiens une erreur lors de l'exécution du fichier setup.py. D'abord, je cours Ubuntu 16.04 sur VirtualBox. D'abord, je cours Ubuntu 16.04 sur VirtualBox. J'ai installé Docker et ai couruErreur de renvoi du fichier setup.py d'OpenSFM après la création via Docker

docker pull freakthemighty/opensfm 

Cette image a été construite avec succès.

En outre, j'ai cloné le référentiel OpenSFM de here dans mon dossier personnel.

Ensuite, je suis censé construire en exécutant ce dans le dossier principal:

python setup.py build 

C'est l'erreur résultant

[email protected]:~$ python setup.py build 
Configuring... 
Traceback (most recent call last): 
    File "setup.py", line 21, in <module> 
    subprocess.Popen(['cmake','../opensfm/src'], cwd='cmake_build').wait() 
    File "/usr/lib/python2.7/subprocess.py", line 711, in __init__ 
    errread, errwrite) 
    File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 

Here est le fichier setup.py en question.

Répondre

0

J'ai fini par construire moi-même le Dockerfile. J'ai ajouté quelques dernières étapes pour le faire fonctionner et avoir OpenSfM construire automatiquement.

Je clone d'abord le référentiel, puis ajoute deux paquets manquants, puis crée le fichier setup.py automatiquement.

FROM ubuntu:16.04 

# Install apt-getable dependencies 
RUN apt-get update \ 
    && apt-get install -y \ 
     build-essential \ 
     cmake \ 
     git \ 
     libatlas-base-dev \ 
     libboost-python-dev \ 
     libeigen3-dev \ 
     libgoogle-glog-dev \ 
     libopencv-dev \ 
     libsuitesparse-dev \ 
     python-dev \ 
     python-numpy \ 
     python-opencv \ 
     python-pip \ 
     python-pyexiv2 \ 
     python-pyproj \ 
     python-scipy \ 
     python-yaml \ 
     wget \ 
    && apt-get clean \ 
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 


# Install Ceres from source 
RUN \ 
    mkdir -p /source && cd /source && \ 
    wget http://ceres-solver.org/ceres-solver-1.10.0.tar.gz && \ 
    tar xvzf ceres-solver-1.10.0.tar.gz && \ 
    cd /source/ceres-solver-1.10.0 && \ 
    mkdir -p build && cd build && \ 
    cmake .. -DCMAKE_C_FLAGS=-fPIC -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF && \ 
    make install && \ 
    cd/&& \ 
    rm -rf /source/ceres-solver-1.10.0 && \ 
    rm -f /source/ceres-solver-1.10.0.tar.gz 


# Install opengv from source 
RUN \ 
    mkdir -p /source && cd /source && \ 
    git clone https://github.com/paulinus/opengv.git && \ 
    cd /source/opengv && \ 
    mkdir -p build && cd build && \ 
    cmake .. -DBUILD_TESTS=OFF -DBUILD_PYTHON=ON && \ 
    make install && \ 
    cd/&& \ 
    rm -rf /source/opengv 

#Clone the OpenSfM Repository 
RUN git clone https://github.com/mapillary/OpenSfM.git 

#Add additional functions that for some reason didn't come with the docker file 
Run apt-get update \ 
    && apt-get install python-networkx \ 
    python-exif \ 
    python-xmltodict 

#Automatically build OpenSfM so that its prebuilt in the docker 
Run cd OpenSfM && python setup.py build 
0

La réponse officielle que je suis:

Salut @walter,

il y a deux façons de courir opensfm, avec ou sans docker.

Si vous souhaitez utiliser docker, il n'est pas nécessaire d'exécuter python setup.py build. Au lieu de construire l'image docker en utilisant

cd path/to/OpenSfM 
docker build -t mapillary/opensfm . 

puis exécutez en utilisant

docker run -ti mapillary/opensfm /bin/sh -c "bin/run_all data/berlin" 

Notez que cela va créer la reconstruction à l'intérieur du conteneur docker. Vous aurez besoin de certaines connaissances docker pour mapper un dossier local à un dossier dans l'image docker afin que nous puissions accéder aux résultats à l'extérieur.

L'autre option consiste à ne pas utiliser le docker. Dans ce cas, vous devrez installer les dépendances sur votre machine ubuntu. Voir https://github.com/mapillary/OpenSfM#installing-dependencies-on-ubuntu. Après cela, vous serez en mesure d'exécuter python setup.py construire

espérons que cela aide, pau