Я не могу установить пакет CVXPY для Python 3.6 в виртуальной среде

Я пытаюсь установить пакет CVXPY в виртуальной среде для Python 3.6 в Linux Ubuntu 16.04.

Я начал с создания виртуальной среды:

python3.6 -m venv tutorial-env

Затем я следовал инструкциям здесь и установил следующие зависимости. вручную:

pip install numpy
pip install scipy

Затем я попытался загрузить CVXPY:

pip install cvxpy

Но я получаю следующую ошибку:

Collecting cvxpy
  Using cached cvxpy-1.1.7.tar.gz (1.0 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Requirement already satisfied: osqp>=0.4.1 in ./tutorial-env/lib/python3.6/site-packages (from cvxpy) (0.6.1)
Requirement already satisfied: scipy>=1.1.0 in ./tutorial-env/lib/python3.6/site-packages (from cvxpy) (1.5.4)
Requirement already satisfied: numpy>=1.15 in ./tutorial-env/lib/python3.6/site-packages (from cvxpy) (1.19.4)
Requirement already satisfied: ecos>=2 in ./tutorial-env/lib/python3.6/site-packages (from cvxpy) (2.0.7.post1)
Collecting scs>=1.1.6
  Using cached scs-2.1.2.tar.gz (3.5 MB)
Requirement already satisfied: future in ./tutorial-env/lib/python3.6/site-packages (from osqp>=0.4.1->cvxpy) (0.18.2)
Using legacy 'setup.py install' for scs, since package 'wheel' is not installed.
Building wheels for collected packages: cvxpy
  Building wheel for cvxpy (PEP 517) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/[username]/tutorial-env/bin/python3.6 /home/[username]/tutorial-env/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py build_wheel /tmp/tmpehj5rzra
       cwd: /tmp/pip-install-bu874zhr/cvxpy
  Complete output (426 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.6
  creating build/lib.linux-x86_64-3.6/cvxpy
  copying cvxpy/__init__.py -> build/lib.linux-x86_64-3.6/cvxpy
  copying cvxpy/error.py -> build/lib.linux-x86_64-3.6/cvxpy
  copying cvxpy/settings.py -> build/lib.linux-x86_64-3.6/cvxpy
  [....cut for length...]
  running build_ext
  building '_cvxcore' extension
  creating build/temp.linux-x86_64-3.6
  creating build/temp.linux-x86_64-3.6/cvxpy
  creating build/temp.linux-x86_64-3.6/cvxpy/cvxcore
  creating build/temp.linux-x86_64-3.6/cvxpy/cvxcore/src
  creating build/temp.linux-x86_64-3.6/cvxpy/cvxcore/python
  x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Icvxpy/cvxcore/src/ -Icvxpy/cvxcore/python/ -Icvxpy/cvxcore/include/ -I/home/[username]/tutorial-env/include -I/usr/include/python3.6m -I/tmp/pip-build-env-7cso5slq/overlay/lib/python3.6/site-packages/numpy/core/include -c cvxpy/cvxcore/src/cvxcore.cpp -o build/temp.linux-x86_64-3.6/cvxpy/cvxcore/src/cvxcore.o -O3
  x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Icvxpy/cvxcore/src/ -Icvxpy/cvxcore/python/ -Icvxpy/cvxcore/include/ -I/home/[username]/tutorial-env/include -I/usr/include/python3.6m -I/tmp/pip-build-env-7cso5slq/overlay/lib/python3.6/site-packages/numpy/core/include -c cvxpy/cvxcore/src/LinOpOperations.cpp -o build/temp.linux-x86_64-3.6/cvxpy/cvxcore/src/LinOpOperations.o -O3
  cvxpy/cvxcore/src/LinOpOperations.cpp: In function ‘Tensor get_rmul_mat(const LinOp&, int)’:
  cvxpy/cvxcore/src/LinOpOperations.cpp:717:7: warning: variable ‘arg_cols’ set but not used [-Wunused-but-set-variable]
     int arg_cols;
         ^
  x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Icvxpy/cvxcore/src/ -Icvxpy/cvxcore/python/ -Icvxpy/cvxcore/include/ -I/home/[username]/tutorial-env/include -I/usr/include/python3.6m -I/tmp/pip-build-env-7cso5slq/overlay/lib/python3.6/site-packages/numpy/core/include -c cvxpy/cvxcore/src/Utils.cpp -o build/temp.linux-x86_64-3.6/cvxpy/cvxcore/src/Utils.o -O3
  x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Icvxpy/cvxcore/src/ -Icvxpy/cvxcore/python/ -Icvxpy/cvxcore/include/ -I/home/[username]/tutorial-env/include -I/usr/include/python3.6m -I/tmp/pip-build-env-7cso5slq/overlay/lib/python3.6/site-packages/numpy/core/include -c cvxpy/cvxcore/python/cvxcore_wrap.cpp -o build/temp.linux-x86_64-3.6/cvxpy/cvxcore/python/cvxcore_wrap.o -O3
  cvxpy/cvxcore/python/cvxcore_wrap.cpp:178:21: fatal error: Python.h: No such file or directory
  compilation terminated.
  error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for cvxpy
Failed to build cvxpy
ERROR: Could not build wheels for cvxpy which use PEP 517 and cannot be installed directly

Pastebin с полным сообщением об ошибке.

У меня установлен CVXPY и работает на Python 3.5.2. Я не уверен, почему у меня так много проблем с его работой на Python 3.6.12. Я пытался установить зависимости OSQP, ECOS и SCS вручную, прежде чем пытаться установить CVXPY, но SCS выдает ту же ошибку (не удалось построить колесо для SCS).

Я понятия не имею, что это значит, и я не могу разобраться в этом. Любая помощь приветствуется.

РЕДАКТИРОВАТЬ: Итак, я сделал то, что предложил один из комментариев, и установил следующее:

pip install wheel

Но я все еще получаю сообщение об ошибке.

Я попытался установить зависимость, клонировав репозиторий git, но ничего не изменилось.

(tutorial-env) [username]@CS:~$ git clone https://github.com/cvxgrp/cvxpy
Cloning into 'cvxpy'...
remote: Enumerating objects: 169, done.
remote: Counting objects: 100% (169/169), done.
remote: Compressing objects: 100% (124/124), done.
remote: Total 58970 (delta 90), reused 75 (delta 41), pack-reused 58801
Receiving objects: 100% (58970/58970), 168.74 MiB | 6.17 MiB/s, done.
Resolving deltas: 100% (40842/40842), done.
Checking connectivity... done.
(tutorial-env) [username]@CS:~$ cd ~/cvxpy
(tutorial-env) [username]@CS:~/cvxpy$ pip install -e .
Obtaining file:///home/[username]/cvxpy
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Requirement already satisfied: numpy>=1.15 in /home/[username]/tutorial-env/lib/python3.6/site-packages (from cvxpy==1.1.7) (1.19.4)
Requirement already satisfied: osqp>=0.4.1 in /home/[username]/tutorial-env/lib/python3.6/site-packages (from cvxpy==1.1.7) (0.6.1)
Requirement already satisfied: ecos>=2 in /home/[username]/tutorial-env/lib/python3.6/site-packages (from cvxpy==1.1.7) (2.0.7.post1)
Collecting scs>=1.1.6
  Using cached scs-2.1.2.tar.gz (3.5 MB)
Requirement already satisfied: scipy>=1.1.0 in /home/[username]/tutorial-env/lib/python3.6/site-packages (from cvxpy==1.1.7) (1.5.4)
Requirement already satisfied: future in /home/[username]/tutorial-env/lib/python3.6/site-packages (from osqp>=0.4.1->cvxpy==1.1.7) (0.18.2)
Building wheels for collected packages: scs
  Building wheel for scs (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/[username]/tutorial-env/bin/python3.6 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-2yhxymp8/scs/setup.py'"'"'; __file__='"'"'/tmp/pip-install-2yhxymp8/scs/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-xrktv9lx
       cwd: /tmp/pip-install-2yhxymp8/scs/

[snipped for length]

error: Command "x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPYTHON -DCTRLC=1 -DDLONG=1 -DCOPYAMATRIX -DUSE_LAPACK -DHAVE_CBLAS -DHAVE_CBLAS -Iscs/include -Iscs/linsys -Iscs/linsys/cpu/direct/ -Iscs/linsys/external/amd -Iscs/linsys/external/dqlql -I/home/[username]/tutorial-env/lib/python3.6/site-packages/numpy/core/include -I/home/[username]/tutorial-env/include -I/usr/include/python3.6m -c src/scsmodule.c -o build/temp.linux-x86_64-3.6/src/scsmodule.o -O3" failed with exit status 1

----------------------------------------
  ERROR: Failed building wheel for scs
  Running setup.py clean for scs
Failed to build scs
Installing collected packages: scs, cvxpy
    Running setup.py install for scs ... error
    ERROR: Command errored out with exit status 1:
     command: /home/[username]/tutorial-env/bin/python3.6 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-2yhxymp8/scs/setup.py'"'"'; __file__='"'"'/tmp/pip-install-2yhxymp8/scs/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-yr_7wj14/install-record.txt --single-version-externally-managed --compile --install-headers /home/[username]/tutorial-env/include/site/python3.6/scs
         cwd: /tmp/pip-install-2yhxymp8/scs/
    Complete output (115 lines):

[snipped for length]

 error: Command "x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPYTHON -DCTRLC=1 -DDLONG=1 -DCOPYAMATRIX -DUSE_LAPACK -DHAVE_CBLAS -DHAVE_CBLAS -Iscs/include -Iscs/linsys -Iscs/linsys/cpu/direct/ -Iscs/linsys/external/amd -Iscs/linsys/external/dqlql -I/home/[username]/tutorial-env/lib/python3.6/site-packages/numpy/core/include -I/home/[username]/tutorial-env/include -I/usr/include/python3.6m -c src/scsmodule.c -o build/temp.linux-x86_64-3.6/src/scsmodule.o -O3" failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/[username]/tutorial-env/bin/python3.6 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-2yhxymp8/scs/setup.py'"'"'; __file__='"'"'/tmp/pip-install-2yhxymp8/scs/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-yr_7wj14/install-record.txt --single-version-externally-managed --compile --install-headers /home/[username]/tutorial-env/include/site/python3.6/scs Check the logs for full command output.

Pastebin с полным сообщением об ошибке.

Затем я попытался сначала установить зависимость SCS сам по себе, но, тем не менее, такая же ошибка. Pastebin с полным сообщением об ошибке.


person CompleteRegistration    schedule 11.11.2020    source источник
comment
Похоже, это ошибка, потому что пакет wheel не установлен. Попробуйте сделать pip install wheel.   -  person Czaporka    schedule 11.11.2020
comment
@Czaporka, я установил пакет, но все еще получаю сообщение об ошибке. Я обновил запрос с дополнительной информацией.   -  person CompleteRegistration    schedule 12.11.2020


Ответы (1)


**ИСПРАВЛЕНО.

Сделав то, что предложил @Czaporka, и установив колеса с помощью pip:

pip install wheels

сообщение об ошибке продолжало сохраняться. Проблема была определена следующей строкой в ​​полном сообщении об ошибке:

fatal error: Python.h: No such file or directory
  compilation terminated.

Способ устранения этого сообщения об ошибке описан в этом ответе. Выполнение следующего на терминале Linux устранило проблему:

sudo apt-get install python3.6-dev

И я смог продолжить и установить CVXPY с помощью pip без дальнейших проблем.

person CompleteRegistration    schedule 12.11.2020