首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过Docker构建后OpenSFM setup.py文件返回错误

通过Docker构建后OpenSFM setup.py文件返回错误
EN

Stack Overflow用户
提问于 2017-03-12 07:52:01
回答 2查看 1.2K关注 0票数 1

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

首先,我在VirtualBox上运行Ubuntu16.04。我安装了Docker并运行

代码语言:javascript
复制
docker pull freakthemighty/opensfm

此映像已成功构建。

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

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

代码语言:javascript
复制
python setup.py build

这就是产生的错误

代码语言:javascript
复制
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

Here是有问题的setup.py文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-12 09:25:08

我最终自己构建了Dockerfile。我添加了最后几个步骤来让它工作,并让OpenSfM自动构建。

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-03-14 04:18:48

我得到的官方回应是:

嗨@沃尔特,

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

如果您想使用docker,则不需要运行python。相反,使用以下命令构建docker镜像

代码语言:javascript
复制
cd path/to/OpenSfM
docker build -t mapillary/opensfm .

然后使用以下命令运行

代码语言:javascript
复制
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构建

希望这对你有帮助,保罗

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42742067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档