Virtualenv:"main.py" 给出错误但 "python main.py" 工作得很好

Virtualenv: "main.py" gives error but "python main.py" works perfectly fine

我创建了一个新的 virtualenv 来测试 fuzzywuzzy。我激活我的环境和 "pip install fuzzywuzzy"

我使用以下代码创建了一个文件 "main.py":

from fuzzywuzzy import fuzz

r = fuzz.ratio("this is a test", "this is a test!")

print(r)

回到控制台,我激活环境并输入 "main.py":

(fuzzytest) C:\Users\Family\Desktop\fuzzytest>main.py
Traceback (most recent call last):
  File "C:\Users\Family\Desktop\fuzzytest\main.py", line 1, in <module>
    from fuzzywuzzy import fuzz
ImportError: No module named 'fuzzywuzzy'

但是如果我这样做 "python main.py":

(fuzzytest) C:\Users\Family\Desktop\fuzzytest>python main.py
97

它工作正常。这是为什么?我做错了什么吗?

尝试使用 #! /usr/bin/env python 启动脚本。

根据 python docs

这应该适用于 windows

Am I doing anything wrong?

是的。

1) pip 在特定目录中安装模块。

2) 当您使用 python 执行程序时,python 仅在特定目录中搜​​索您在程序中导入的模块。您可以通过查看输出来查看这些目录:

import sys
print(sys.path) 

其中一个目录是 pip 用来安装模块的目录。

3) 当您尝试在没有 python 的情况下执行程序时,会搜索其他一些目录,而这些目录不包含 fuzzywuzzy 模块。