virtualenv中的模块导入错误,但是pip列表--local显示它

问题描述 投票:0回答:1

我想知道以下importError,我无法逃脱。我有一个本地的virtualenv(venv),我在其中安装了多个模块:

(venv) stam@stam:~$ pip list --local

cryptography (1.5.2)
cvxopt (1.1.9)
cycler (0.10.0)
Cython (0.25.1)
matplotlib (1.5.3)
more-itertools (2.2)
ndg-httpsclient (0.4.2)
numpy (1.11.2)
pandas (0.19.0)
paramiko (1.15.2)
Pillow (2.8.1)
pip (8.1.2)
psycopg2 (2.6)
python-apt (0.9.3.12)
python-dateutil (2.5.3)
python-debian (0.1.27)
scipy (0.18.1)
setuptools (28.6.1)
simplejson (3.8.2)
urllib3 (1.9.1)
wheel (0.24.0)
You are using pip version 8.1.2, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(venv) stam@stam:~$ 

现在启动python解释器并尝试导入cvxopt(注意它在上面的列表中)给了我一个importError。为什么是这样?我正在使用正确的python版本,我在venv上工作所以一切都应该开箱即用。

(venv) stam@stam:~$ python
Python 2.7.9 (default, Aug 13 2016, 16:41:35) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cvxopt
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named cvxopt
>>> 

我有点迷茫,不知道我究竟能解决这个问题。似乎正确的python版本已经启动,至少是我附加到virtualenv的版本。

在评论中要求额外的出口

(venv) stam@stam:~$ which python
/usr/bin/python
(venv) stam@stam:~$ which pip
/usr/local/bin/pip
python pip virtualenv
1个回答
0
投票

基于which的输出,很明显你的python和pip属于两个不同的实例。因此,您安装的所有库都将安装用于其他一些python实例。

急性修复是强制pip通过指定的解释器运行:

python -m pip list --local
python -m pip install cvxopt
© www.soinside.com 2019 - 2024. All rights reserved.