来自 allauth 的未解决进口

Unresolved imports from allauth

我正在尝试使用来自 allauth 的一些导入,但我得到了 Python(unresolved-import)

我也 pip 安装了 django-allauth,我正在使用 virtualenv。

这是我在虚拟环境中冻结的 pip:

appdirs==1.4.3
asgiref==3.2.7     
autopep8==1.5.2    
certifi==2020.4.5.1
cffi==1.14.0       
chardet==3.0.4
coverage==5.1
cryptography==2.9.2
defusedxml==0.6.0
distlib==0.3.0
Django==3.0.6
django-allauth==0.42.0
django-cors-headers==3.3.0
django-rest-auth==0.9.5
django-rest-knox==4.1.0
djangorestframework==3.11.0
djangorestframework-jwt==1.11.0
env==0.1.0
filelock==3.0.12
idna==2.9
oauthlib==3.1.0
pipenv==2018.11.26
pycodestyle==2.5.0
pycparser==2.20
PyJWT==1.7.1
python3-openid==3.1.0
pytz==2020.1
requests==2.23.0
requests-oauthlib==1.3.0
six==1.14.0
sqlparse==0.3.1
urllib3==1.25.9
virtualenv==20.0.20
virtualenv-clone==0.5.4

此外,如果我尝试重新安装,则会返回以下消息:

Requirement already satisfied: django-allauth in c:\users\oricc\appdata\local\programs\python\python38-32\lib\site-packages (0.42.0)

我只是一个初学者,但据我所知,django 无法从我的虚拟环境中看到 allauth,因为它安装在主 python 路径中。

什么是好的解决方案?是否可以在虚拟环境中安装 allauth?

是的,这是可能的,您应该将它安装在 virtualenv 中。 (除非你的 virtualenv 是用 --system-site-packages 创建的,否则它不会使用那些系统范围的包。)

您应该清理您的全局环境:

  • 在你的 virtualenv 之外,运行 pip list。查看不应该存在的包(可能有一些在全球范围内很方便的包,但通常全球包越少越好)。
  • 运行 pip uninstall some-package-here 在那些包上。

然后在您的 virtualenv 中重新安装您的要求(最好删除 virtualenv 并在其位置创建一个新的)。

PIP_REQUIRE_VIRTUALENV setting configured 通常也是个好主意,这样您就不会不小心全局安装软件包。