【发布时间】:2018-07-28 01:28:18
【问题描述】:
得到一个非常奇怪的错误。我正在创建一个虚拟环境并使用 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 to @Riverman 帮助我找到了问题:问题是一个旧的未使用的别名是不久前遗留下来的,虽然 pip 仍然有它自己的指向 python3.6,但 python 命令本身被别名为我躺在某个地方的一些旧的 Anaconda3 版本。别名,我忘记了,不要仅仅重新采购你的 .bashrc 文件就可以了,所以我用有问题的 python 命令运行了unalias,它起作用了!
如果他们能解释为什么会发生这种情况,我仍然很乐意听取他们的意见。我虽然 venv 完全将你与外部环境隔离开来……是不是因为混叠是一种系统级效应,所以它会渗入 venv 中??
【问题讨论】:
标签: python module pip virtualenv alias