未找到virtualenv中PIP安装的模块

时间:2018-02-17 06:27:49

标签: python module pip virtualenv alias

得到一个非常奇怪的错误。我正在创建一个虚拟环境并使用pip requirements.txt文件对其进行初始化,但是当我在激活的环境中运行代码时,虚拟环境解释器声称缺少一些(并且只有部分)模块:

(venv) $ pip list
certifi (2017.7.27.1)
chardet (3.0.4)
decorator (4.1.2)
idna (2.5)
ipython (6.1.0)
ipython-genutils (0.2.0)
jedi (0.10.2)
numpy (1.13.1)
olefile (0.44)
pexpect (4.2.1)
pickleshare (0.7.4)
Pillow (4.2.1)
pip (9.0.1)
prompt-toolkit (1.0.15)
protobuf (3.3.0)
ptyprocess (0.5.2)
Pygments (2.2.0)
PyYAML (3.12)
pyzmq (16.0.2)
requests (2.18.3)
scipy (0.19.1)
setuptools (38.5.1)
simplegeneric (0.8.1)
six (1.10.0)
torch (0.2.0.post3)
torchvision (0.2.0)
tornado (4.5.1)
tqdm (4.15.0)
traitlets (4.3.2)
urllib3 (1.22)
visdom (0.1.5)
wcwidth (0.1.7)
wheel (0.30.0)

所以我仔细检查:

(venv) $ pip install tqdm 
Requirement already satisfied: tqdm in ./venv/lib/python3.6/site-packages
(venv) $ python  
Python 3.6.3 |Anaconda custom (64-bit)| (default, Oct 13 2017, 12:02:49) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from tqdm import tqdm
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'tqdm'

人们使用不同的解释器来源建议forcing a reinstall,然后重新安装。这些都没有奏效。这很神秘。有没有人见过这样的东西?看到一个类似的未解决的问题here

更新:已修复。 H / T给@Riverman帮助我找到问题:问题是前一段时间遗留了一个旧的未使用的别名,而pip仍然有自己的点回到python3.6,python命令本身是别名的一些旧的Anaconda3版本我躺在某处。 Alias,我忘了,不要仅仅重新获取你的.bashrc文件,所以我使用违规的python命令运行unalias它就有用了!

尽管如此,他们仍然希望听到人们的意见,但是他们可以解释为什么会发生这种情况。我虽然venv完全隔绝你的外部环境......是因为别名是一个系统级别的影响所以它渗入了venv ??

3 个答案:

答案 0 :(得分:1)

你使用了pip(为Python 2.7安装),你试图在Python3中导入已安装的软件包,所以它不会工作。 你应该做pip3 install package-name。 pip3安装Python3。使用apt-get install python3-pip安装pip3 它会起作用。

答案 1 :(得分:1)

在virtualenv内部时,请发出以下命令:

  • pip freeze
  • pip -V
  • python -V
  • 哪个python
  • 哪一点

在此处分享您的结果以进行分析。我之前也遇到过与requests包相似的问题,但是在我的窗户上发生了这种情况。

答案 2 :(得分:0)

我有一个非常相似的问题:我正在虚拟环境(virtualenv)上工作,并在该环境中安装了熊猫,方法如下:

pip3 install pandas

但是,当我在也位于此虚拟环境中的jupyter笔记本上工作时尝试导入此模块时,使用以下命令:

import pandas as pd

我遇到了错误:

ModuleNotFoundError: No module named 'pandas'

最后,我注意到,即使我从虚拟环境内部激活jupyter笔记本,也要从虚拟环境外部打开jupyter笔记本(因为我还在所有虚拟环境之外也安装了此模块)。我的解决方案是卸载虚拟环境之外的jupyter,然后从所需环境中再次运行juypter nb时,一切正常。