簡體   English   中英

我無法在虛擬環境中為 Python 3.6 安裝 CVXPY package

[英]I'm unable to install the CVXPY package for Python 3.6 in a virtual environment

我正在嘗試在 Python 3.6、Linux Ubuntu 16.04 的虛擬環境中安裝 CVXPY package。

我首先創建一個虛擬環境:

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 上運行時遇到這么多麻煩。 在嘗試安裝 CVXPY 之前,我嘗試手動安裝依賴項 OSQP、ECOS 和 SCS,但是 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

**固定的。

在按照@Czaporka 的建議進行操作並使用 pip 安裝輪子之后:

pip install wheels

錯誤消息繼續存在。 完整錯誤消息中的以下行標識了該問題:

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

此答案中概述了解決此錯誤消息的方法。 在 Linux 終端上運行以下命令修復了問題:

sudo apt-get install python3.6-dev

而且我能夠提前 go 並使用 pip 安裝 CVXPY,沒有其他問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM