Python 3.x 在Ubuntu 20.04中使用pip安装onnx时出错

Python 3.x 在Ubuntu 20.04中使用pip安装onnx时出错,python-3.x,pip,onnx,ubuntu-20.04,Python 3.x,Pip,Onnx,Ubuntu 20.04,我试图在新的Ubuntu 20.04安装中安装onnx,但遇到了下面的错误。看起来我需要protobuf编译器,尽管我还没有找到任何文档说明我需要安装这个包 $ sudo python3 -m pip install 'onnx>=1.1.2' Collecting onnx>=1.1.2 Using cached onnx-1.6.0.tar.gz (3.1 MB) Requirement already satisfied: numpy in /usr/local/lib/p

我试图在新的Ubuntu 20.04安装中安装onnx,但遇到了下面的错误。看起来我需要protobuf编译器,尽管我还没有找到任何文档说明我需要安装这个包

$ sudo python3 -m pip install 'onnx>=1.1.2'
Collecting onnx>=1.1.2
  Using cached onnx-1.6.0.tar.gz (3.1 MB)
Requirement already satisfied: numpy in /usr/local/lib/python3.8/dist-packages (from onnx>=1.1.2) (1.18.3)
Requirement already satisfied: protobuf in /usr/lib/python3/dist-packages (from onnx>=1.1.2) (3.6.1)
Requirement already satisfied: six in /usr/lib/python3/dist-packages (from onnx>=1.1.2) (1.14.0)
Requirement already satisfied: typing-extensions>=3.6.2.1 in /usr/local/lib/python3.8/dist-packages (from onnx>=1.1.2) (3.7.4.2)
Building wheels for collected packages: onnx
  Building wheel for onnx (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-akurq0e8/onnx/setup.py'"'"'; __file__='"'"'/tmp/pip-install-akurq0e8/onnx/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-zmzgb0kg
       cwd: /tmp/pip-install-akurq0e8/onnx/
  Complete output (64 lines):
  fatal: not a git repository (or any of the parent directories): .git
  running bdist_wheel
  running build
  running build_py
  running create_version
  running cmake_build
  -- The C compiler identification is GNU 9.3.0
  -- The CXX compiler identification is GNU 9.3.0
  -- Check for working C compiler: /usr/bin/cc
  -- Check for working C compiler: /usr/bin/cc -- works
  -- Detecting C compiler ABI info
  -- Detecting C compiler ABI info - done
  -- Detecting C compile features
  -- Detecting C compile features - done
  -- Check for working CXX compiler: /usr/bin/c++
  -- Check for working CXX compiler: /usr/bin/c++ -- works
  -- Detecting CXX compiler ABI info
  -- Detecting CXX compiler ABI info - done
  -- Detecting CXX compile features
  -- Detecting CXX compile features - done
  Generated: /tmp/pip-install-akurq0e8/onnx/.setuptools-cmake-build/onnx/onnx-ml.proto
  CMake Error at CMakeLists.txt:248 (message):
    Protobuf compiler not found
  Call Stack (most recent call first):
    CMakeLists.txt:279 (relative_protobuf_generate_cpp)


  -- Configuring incomplete, errors occurred!
  See also "/tmp/pip-install-akurq0e8/onnx/.setuptools-cmake-build/CMakeFiles/CMakeOutput.log".
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/tmp/pip-install-akurq0e8/onnx/setup.py", line 315, in <module>
      setuptools.setup(
    File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 144, in setup
      return distutils.core.setup(**attrs)
    File "/usr/lib/python3.8/distutils/core.py", line 148, in setup
      dist.run_commands()
    File "/usr/lib/python3.8/distutils/dist.py", line 966, in run_commands
      self.run_command(cmd)
    File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/usr/lib/python3/dist-packages/wheel/bdist_wheel.py", line 223, in run
      self.run_command('build')
    File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/usr/lib/python3.8/distutils/command/build.py", line 135, in run
      self.run_command(cmd_name)
    File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/tmp/pip-install-akurq0e8/onnx/setup.py", line 209, in run
      self.run_command('cmake_build')
    File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/tmp/pip-install-akurq0e8/onnx/setup.py", line 195, in run
      subprocess.check_call(cmake_args)
    File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
      raise CalledProcessError(retcode, cmd)
  subprocess.CalledProcessError: Command '['/usr/bin/cmake', '-DPYTHON_INCLUDE_DIR=/usr/include/python3.8', '-DPYTHON_EXECUTABLE=/usr/bin/python3', '-DBUILD_ONNX_PYTHON=ON', '-DCMAKE_EXPORT_COMPILE_COMMANDS=ON', '-DONNX_NAMESPACE=onnx', '-DPY_EXT_SUFFIX=.cpython-38-x86_64-linux-gnu.so', '-DCMAKE_BUILD_TYPE=Release', '-DONNX_ML=1', '/tmp/pip-install-akurq0e8/onnx']' returned non-zero exit status 1.
  ----------------------------------------
  ERROR: Failed building wheel for onnx
  Running setup.py clean for onnx
Failed to build onnx
Installing collected packages: onnx
    Running setup.py install for onnx ... error
    ERROR: Command errored out with exit status 1:
     command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-akurq0e8/onnx/setup.py'"'"'; __file__='"'"'/tmp/pip-install-akurq0e8/onnx/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-txzgh5wg/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.8/onnx
         cwd: /tmp/pip-install-akurq0e8/onnx/
    Complete output (52 lines):
    fatal: not a git repository (or any of the parent directories): .git
    running install
    running build
    running build_py
    running create_version
    running cmake_build
    Generated: /tmp/pip-install-akurq0e8/onnx/.setuptools-cmake-build/onnx/onnx-ml.proto
    CMake Error at CMakeLists.txt:248 (message):
      Protobuf compiler not found
    Call Stack (most recent call first):
      CMakeLists.txt:279 (relative_protobuf_generate_cpp)


    -- Configuring incomplete, errors occurred!
    See also "/tmp/pip-install-akurq0e8/onnx/.setuptools-cmake-build/CMakeFiles/CMakeOutput.log".
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-akurq0e8/onnx/setup.py", line 315, in <module>
        setuptools.setup(
      File "/usr/lib/python3/dist-packages/setuptools/__init__.py", line 144, in setup
        return distutils.core.setup(**attrs)
      File "/usr/lib/python3.8/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/usr/lib/python3.8/distutils/dist.py", line 966, in run_commands
        self.run_command(cmd)
      File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/usr/lib/python3/dist-packages/setuptools/command/install.py", line 61, in run
        return orig.install.run(self)
      File "/usr/lib/python3.8/distutils/command/install.py", line 589, in run
        self.run_command('build')
      File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/usr/lib/python3.8/distutils/command/build.py", line 135, in run
        self.run_command(cmd_name)
      File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/tmp/pip-install-akurq0e8/onnx/setup.py", line 209, in run
        self.run_command('cmake_build')
      File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/tmp/pip-install-akurq0e8/onnx/setup.py", line 195, in run
        subprocess.check_call(cmake_args)
      File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command '['/usr/bin/cmake', '-DPYTHON_INCLUDE_DIR=/usr/include/python3.8', '-DPYTHON_EXECUTABLE=/usr/bin/python3', '-DBUILD_ONNX_PYTHON=ON', '-DCMAKE_EXPORT_COMPILE_COMMANDS=ON', '-DONNX_NAMESPACE=onnx', '-DPY_EXT_SUFFIX=.cpython-38-x86_64-linux-gnu.so', '-DCMAKE_BUILD_TYPE=Release', '-DONNX_ML=1', '/tmp/pip-install-akurq0e8/onnx']' returned non-zero exit status 1.
    ----------------------------------------
ERROR: Command errored out with exit status 1: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-akurq0e8/onnx/setup.py'"'"'; __file__='"'"'/tmp/pip-install-akurq0e8/onnx/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-txzgh5wg/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.8/onnx Check the logs for full command output.

为了避免这个问题,可以创建一个符号链接,以便python命令实际运行python3。

总之,要在Ubuntu 20.04中成功安装onnx,您需要:

1安装protobuf编译器:sudo apt安装protobuf编译器

2创建一个从python3到python的链接:sudo ln-s/usr/bin/python3/usr/bin/python


注意:可能我错过了另一个依赖项,我在安装OpenVINO依赖项时已经安装了很多其他软件包。

总之,要在Ubuntu 20.04中成功安装onnx,您需要:

1安装protobuf编译器:sudo apt安装protobuf编译器

2创建一个从python3到python的链接:sudo ln-s/usr/bin/python3/usr/bin/python


注意:也许我错过了另一个依赖项,我在安装OpenVINO依赖项时已经安装了很多其他软件包。

刚刚验证了Ubuntu18.04上tgonzaleza的提示。 此修复后,将显示以下错误: 找不到Protobuf缺少:Protobuf_INCLUDE_DIR 可以通过以下方式进行修复:

sudo apt-get install libprotobuf-dev

刚刚验证了Ubuntu18.04上tgonzaleza的提示。 此修复后,将显示以下错误: 找不到Protobuf缺少:Protobuf_INCLUDE_DIR 可以通过以下方式进行修复:

sudo apt-get install libprotobuf-dev

这对我来说在18.04有效。我不需要在python和python3之间添加符号链接,这是出于多种原因我不想做的。我不必在python和python3之间添加符号链接,出于多种原因,我不想这样做。