intel / pailliercryptolib_python

Intel Paillier Cryptosystem Library is an open-source library which provides accelerated performance of a partial homomorphic encryption (HE), named Paillier cryptosystem, by utilizing Intel® IPP-Crypto technologies on Intel CPUs supporting the AVX512IFMA instructions. The library is written in modern standard C++ and provides the essential API for the Paillier cryptosystem scheme. Intel Paillier Cryptosystem Library - Python is a Python extension package intended for Python based privacy preserving machine learning solutions which utilizes the partial HE scheme for increased data and model protection.
Apache License 2.0
56 stars 12 forks source link

Running setup.py install for ipcl-python error when install #19

Closed winterpi closed 1 year ago

winterpi commented 1 year ago

After I run the install command of "pip install .", I encountered the error of "Running setup.py install for ipcl-python did not run successfully."

The detailed error is as following:

Defaulting to user installation because normal site-packages is not writeable Processing /home/winter/Desktop/intel/pailliercryptolib_python Preparing metadata (setup.py) ... done Requirement already satisfied: wheel in /usr/lib/python3/dist-packages (from ipcl-python==1.1.4) (0.34.2) Requirement already satisfied: numpy==1.23.1 in /home/winter/.local/lib/python3.8/site-packages (from ipcl-python==1.1.4) (1.23.1) Requirement already satisfied: pycryptodomex==3.15.0 in /home/winter/.local/lib/python3.8/site-packages (from ipcl-python==1.1.4) (3.15.0) Requirement already satisfied: gmpy2==2.0.8 in /home/winter/.local/lib/python3.8/site-packages (from ipcl-python==1.1.4) (2.0.8) Requirement already satisfied: cachetools==3.0.0 in /home/winter/.local/lib/python3.8/site-packages (from ipcl-python==1.1.4) (3.0.0) Requirement already satisfied: ruamel.yaml==0.16.10 in /home/winter/.local/lib/python3.8/site-packages (from ipcl-python==1.1.4) (0.16.10) Requirement already satisfied: ruamel.yaml.clib>=0.1.2 in /home/winter/.local/lib/python3.8/site-packages (from ruamel.yaml==0.16.10->ipcl-python==1.1.4) (0.2.7) Building wheels for collected packages: ipcl-python Building wheel for ipcl-python (setup.py) ... error error: subprocess-exited-with-error

× python setup.py bdist_wheel did not run successfully. │ exit code: 1 ╰─> [107 lines of output] running bdist_wheel running build running build_py running build_ext -- Found OpenMP_C: -fopenmp (found version "4.5") -- Found OpenMP_CXX: -fopenmp (found version "4.5") -- OpenMP not found - disabling for build -- CMAKE_BUILD_TYPE: Release -- CMAKE_C_COMPILER: /usr/bin/cc -- CMAKE_CXX_COMPILER: /usr/bin/c++ -- IPCL_PYTHON_TEST: ON -- IPCL_PYTHON_DOCS: OFF -- IPCL_PYTHON_DETECT_IFMA_RUNTIME: -- IPCL_PYTHON_ENABLE_OMP: ON -- IPCL_BINDINGS_SRCS_DIR : /home/winter/Desktop/intel/pailliercryptolib_python/src/ipcl_python/bindings -- Configuring Intel Paillier Cryptosystem Library -- pybind11 v2.11.0 dev1 -- Found OpenMP_C: -fopenmp (found version "4.5") -- Found OpenMP_CXX: -fopenmp (found version "4.5") -- Configuring done -- Generating done -- Build files have been written to: /home/winter/Desktop/intel/pailliercryptolib_python/build/temp.linux-x86_64-cpython-38 make: “-j”选项需要正整数参数 用法:make [选项] [目标] ... 选项: -b, -m 为兼容性而忽略。 -B, --always-make 无条件制作 (make) 所有目标。 -C 目录, --directory=目录 在执行前先切换到 <目录>。 -d 打印大量调试信息。 --debug[=旗标] 打印各种调试信息。 -e, --environment-overrides 环境变量覆盖 makefile 中的变量。 --eval=字串 将 <字串> 作为 makefile 语句估值。 -f 文件, --file=文件, --makefile=文件 从 <文件> 中读入 makefile。 -h, --help 打印该消息并退出。 -i, --ignore-errors 忽略来自命令配方的错误。 -I 目录, --include-dir=目录 在 <目录> 中搜索被包含的 makefile。 -j [N], --jobs[=N] 同时允许 N 个任务;无参数表明允许无限个任务。 -k, --keep-going 当某些目标无法制作时仍然继续。 -l [N], --load-average[=N], --max-load[=N] 在系统负载高于 N 时不启动多任务。 -L, --check-symlink-times 使用软链接及软链接目标中修改时间较晚的一个。 -n, --just-print, --dry-run, --recon 只打印命令配方,不实际执行。 -o 文件, --old-file=文件, --assume-old=文件 将 <文件> 当做很旧,不必重新制作。 -O[类型], --output-sync[=类型] 使用 <类型> 方式同步并行任务输出。 -p, --print-data-base 打印 make 的内部数据库。 -q, --question 不运行任何配方;退出状态说明是否已全部更新。 -r, --no-builtin-rules 禁用内置隐含规则。 -R, --no-builtin-variables 禁用内置变量设置。 -s, --silent, --quiet 不输出配方命令。 -S, --no-keep-going, --stop 关闭 -k。 -t, --touch touch 目标(更新修改时间)而不是重新制作它们。 --trace 打印跟踪信息。 -v, --version 打印 make 的版本号并退出。 -w, --print-directory 打印当前目录。 --no-print-directory 关闭 -w,即使 -w 默认开启。 -W 文件, --what-if=文件, --new-file=文件, --assume-new=文件 将 <文件> 当做最新。 --warn-undefined-variables 当引用未定义变量的时候发出警告。

  该程序为 x86_64-pc-linux-gnu 编译
  报告错误到 <bug-make@gnu.org>
  Traceback (most recent call last):
    File "<string>", line 2, in <module>
    File "<pip-setuptools-caller>", line 34, in <module>
    File "/home/winter/Desktop/intel/pailliercryptolib_python/setup.py", line 83, in <module>
      setup(
    File "/home/winter/.local/lib/python3.8/site-packages/setuptools/__init__.py", line 87, in setup
      return distutils.core.setup(**attrs)
    File "/home/winter/.local/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 185, in setup
      return run_commands(dist)
    File "/home/winter/.local/lib/python3.8/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
      dist.run_commands()
    File "/home/winter/.local/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 968, in run_commands
      self.run_command(cmd)
    File "/home/winter/.local/lib/python3.8/site-packages/setuptools/dist.py", line 1217, in run_command
      super().run_command(command)
    File "/home/winter/.local/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 987, 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 "/home/winter/.local/lib/python3.8/site-packages/setuptools/_distutils/cmd.py", line 319, in run_command
      self.distribution.run_command(command)
    File "/home/winter/.local/lib/python3.8/site-packages/setuptools/dist.py", line 1217, in run_command
      super().run_command(command)
    File "/home/winter/.local/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 987, in run_command
      cmd_obj.run()
    File "/home/winter/.local/lib/python3.8/site-packages/setuptools/_distutils/command/build.py", line 132, in run
      self.run_command(cmd_name)
    File "/home/winter/.local/lib/python3.8/site-packages/setuptools/_distutils/cmd.py", line 319, in run_command
      self.distribution.run_command(command)
    File "/home/winter/.local/lib/python3.8/site-packages/setuptools/dist.py", line 1217, in run_command
      super().run_command(command)
    File "/home/winter/.local/lib/python3.8/site-packages/setuptools/_distutils/dist.py", line 987, in run_command
      cmd_obj.run()
    File "/home/winter/Desktop/intel/pailliercryptolib_python/setup.py", line 41, in run
      self.build_extension(ext)
    File "/home/winter/Desktop/intel/pailliercryptolib_python/setup.py", line 78, in build_extension
      subprocess.check_call(
    File "/usr/lib/python3.8/subprocess.py", line 364, in check_call
      raise CalledProcessError(retcode, cmd)
  subprocess.CalledProcessError: Command '['cmake', '--build', '.', '--config', 'Release', '--', '-j0']' returned non-zero exit status 2.
  [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for ipcl-python Running setup.py clean for ipcl-python Failed to build ipcl-python

Could any one give some clues for this problem?

skmono commented 1 year ago

@winterpi Thank you for your interest! We're currently investigating this issue and get back to you as soon as we find something.

skmono commented 1 year ago

Hi @winterpi, I found the cause of the problem - it is due to str(os.cpu_count() -1) found in https://github.com/intel/pailliercryptolib_python/blob/00920d3cc41da842ea5518b18b53f3a00ebe31d1/setup.py#L67 which calls make -jN and an exception is raised when N<=0. I'll apply a fix right away.