Python 在virtualenv中找不到与PIP一起安装的模块

Python 在virtualenv中找不到与PIP一起安装的模块,python,module,pip,virtualenv,alias,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.1

得到一个非常奇怪的错误。我正在创建一个虚拟环境,并使用一个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'
(venv)$pip安装TQM
已满足要求:tqdm in./venv/lib/python3.6/site-packages
(venv)$python
Python 3.6.3 | Anaconda自定义(64位)|(默认值,2017年10月13日,12:02:49)
linux上的[GCC 7.2.0]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>从TQM导入TQM
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ModuleNotFoundError:没有名为“tqdm”的模块
人们建议使用不同的解释器源,然后重新安装。这些都不起作用。这是非常神秘的。你们有谁见过这样的东西吗?看到了一个类似的未解决的问题

更新:已修复。H/T感谢@Riverman帮助我找到问题:问题是,一个旧的未使用的别名是不久前遗留下来的,虽然pip仍然有自己的观点回到python3.6,但python命令本身被化名为我在某处发现的某个旧Anaconda3版本。Alias,我忘了,不要仅仅通过重新寻找你的.bashrc文件就离开了,所以我用有问题的python命令运行了
unalias
,它成功了

不过,如果人们能解释为什么会发生这种情况,我还是很想听听他们的意见。我认为venv将您与外部环境完全隔离……是因为别名是一种系统级效果,所以它会渗透到venv中吗???

您使用了pip(为Python2.7安装),并且您试图在Python3中导入已安装的包,因此它无法工作。 您应该执行
pip3安装程序包名称
。 pip3为Python3安装。使用apt get Install python3 pip安装pip3


它将工作。

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

  • 皮普冷冻
  • pip-V
  • python-V
  • 哪条蟒蛇
  • 哪一点

在此处共享您的结果以进行分析。我以前在
请求
软件包方面也遇到过类似的问题,但我在windows上遇到过类似的问题。

我遇到了一个非常类似的问题:我在虚拟环境(VirtualEnvironment,VirtualEnvironment)上工作,并在该环境中安装了pandas,其中包括:

pip3 install pandas
但是,当我在使用jupyter笔记本电脑时尝试导入此模块时,该笔记本电脑也位于此虚拟环境中,并使用以下命令:

import pandas as pd
我得到了一个错误:

ModuleNotFoundError: No module named 'pandas'

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

我会尝试一下,但我认为情况并非如此。根据上面代码片段中显示的版本,python版本是3.6.4,因为虚拟环境是使用命令创建的:
virtualenv-p python3.6 venv
confirm:
$pip--version pip 9.0.1 from/home/../venv/lib/python3.6/site-packages(python 3.6)
仍然pip工具将响应python 2.7,您需要使用pip3。让我知道它是否工作。确认pip3不工作。另外,请注意,你所说的是不正确的。pip工具响应它所关联的默认python版本。正如我在前面的评论中所展示的,通过打印pip--version,它在输出中显示了它正在使用的python,在本例中为3.6。如果我能正确理解虚拟环境的工作方式,当你身处其中时,你所说的不可能是真的,因为pip工具响应python2.7,就好像你是从python3构建环境一样,这实际上是环境中唯一的python版本……这个解决方案指向了一个绝对错误的方向:在一个venv中,命令pip绑定到venvs pip。在这种情况下,pip 9.0.1输出如下:(venv)$pip冻结认证==2017.7.27.1 chardet==3.0.4 decorator==4.1.2 idna==2.5。请求==2.18.3 tqdm==4.15.0 urllib3==1.22 visdom==0.1.5 wcwidth==0.1.7(venv)$pip-V pip 9.0.1 from/home/balloch/software/synth seg/venv/lib/python3.6/site-packages(python3.6)(venv)$python-v3.6.3::Anaconda定制(64位)(venv)$哪个python:别名为/home/balloch/balloch/anaconda3/bin/python3.6(venv)$pip/home/balloch/software/synth seg/venv/bin/pip这揭示了什么。不知道anaconda有化名。想法?我不是anaconda方面的专家,但顺便说一句,它正在使用自己的二进制文件来管理python和包,以及诸如此类的东西。我想您的机器上安装了多个python和pip,现在它们相互冲突。编辑:我会在anaconda的文件夹中查找一个pip二进制文件,并直接执行它来安装所需的包。此外,我可能会从我的计算机中删除anaconda和python以及所有软件包(使用
createdb
locate
命令来发现它们),然后重新开始创建一个干净的环境。(也检查一下您的bash配置文件)这是一个好主意,但我不认为删除所有python发行版是一个好主意。通常的理解是,从Ubuntu中删除默认的python包会很快导致崩溃,因此通常建议您同时安装。由于我公司的栈只有2.7.6和3.4.3,我目前只能使用Ubuntu 14.04.5。谢天谢地,我们都同意,我们将把时间花在切换到Ubuntu 18.04上……四月不会很快到来,因为我的评论不太准确——很抱歉!什么