1

我在构建 OpenSFM 时遇到问题。运行 setup.py 文件时出现错误。

首先,我在 VirtualBox 上运行 Ubuntu 16.04。我安装了 Docker 并运行

docker pull freakthemighty/opensfm

此映像已成功构建。

此外,我将 OpenSFM 存储库从此处克隆到我的主文件夹中。

接下来,我应该通过在主文件夹中运行它来构建:

python setup.py build

这是由此产生的错误

walter@VirtualUbuntu:~$ 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

是有问题的 setup.py 文件。

4

3 回答 3

1

我得到的官方回复:

嗨@walter,

有两种运行opensfm的方法,有或没有docker。

如果要使用 docker,则无需运行 python setup.py build。而是使用构建 docker 映像

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

然后使用

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

请注意,这将在 docker 容器内创建重建。您需要一些 docker 知识才能将本地文件夹映射到 docker 映像内的文件夹,以便我们可以在外部访问结果。

另一种选择是不使用 docker。在这种情况下,您需要在 ubuntu 机器上安装依赖项,请参阅https://github.com/mapillary/OpenSfM#installing-dependencies-on-ubuntu。之后,您将能够运行 python setup.py build

希望这会有所帮助,保罗

于 2017-03-13T20:18:48.160 回答
0

我最终自己构建了 Dockerfile。我添加了最后几个步骤以使其正常工作并自动构建 OpenSfM。

我首先克隆存储库,然后添加几个缺少的包,然后自动构建 setup.py 文件。

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 
于 2017-03-12T01:25:08.103 回答
0

我在带有 python 3 的 windows 的 docker 上遇到了同样的错误。

解决这个问题;

  1. 我已将https://raw.githubusercontent.com/paulinus/opensfm-docker-base/master/Dockerfile.python3构建为“paulinus/opensfm-docker-base:latest”图像。

  2. 我创建了 Dockerfile 如下;

FROM paulinus/opensfm-docker-base:latest
RUN pip3 install joblib
RUN git clone https://github.com/mapillary/OpenSfM.git && cd OpenSfM && git submodule update --init --recursive && python3 setup.py build

由于某种原因,所需的 python 模块中缺少 joblib,当您想要运行诸如“bin/opensfm_run_all data/berlin”之类的命令时会产生错误

由“pybind11_add_module”引起的 cmake 错误已通过“git submodule update --init --recursive”命令解决。(在https://github.com/patrikhuber/eos/issues/127检查问题)

  1. 然后我建立了它

docker build -t opensfm-python3 。

现在 opensfm 在 windows 中的 docker 容器上工作。

docker run -it opensfm-python3 bash

或者您可以在 docker 容器之外运行命令,如下所示;

docker run -it opensfm-python3 bash -c "cd OpenSfM && bin/opensfm_run_all data/berlin"
于 2020-01-01T22:41:51.723 回答