gpt4 book ai didi

python - 如何修复 ModuleNotFoundError : No module named 'rest_framework' in Ubuntu

转载 作者:行者123 更新时间:2023-12-04 18:59:11 27 4
gpt4 key购买 nike

我第一次尝试在 AWS EC2 上部署 django 应用程序。我正在使用 Ubuntu 服务器,但碰巧我安装的包无法识别,这些包已经添加到 INSTALLED_APPS 中。我得到的错误是:

Traceback (most recent call last):
File "manage.py", line 22, in <module>
main()
File "manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/home/ubuntu/.local/lib/python3.6/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
utility.execute()
File "/home/ubuntu/.local/lib/python3.6/site-packages/django/core/management/__init__.py", line 395, in execute
django.setup()
File "/home/ubuntu/.local/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/ubuntu/.local/lib/python3.6/site-packages/django/apps/registry.py", line 91, in populate
app_config = AppConfig.create(entry)
File "/home/ubuntu/.local/lib/python3.6/site-packages/django/apps/config.py", line 224, in create
import_module(entry)
File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'rest_framework'
该错误引用了 INSTALLED APPS 中首先出现的任何包。在这种情况下,restframework 是第一位的。如果在已安装的应用程序中排在第一位,则错误将是 ModuleNotFoundError: No module named 'corsheaders等等。我知道发生这种行为是因为代码是从 settings.py 文件的顶部到底部解释的。我使用 sudo pip install -r requirements.txt 安装了这些包.当问题不断出现时,我使用 sudo pip3 install packge_name 重新安装了软件包.我在运行安装之前激活了虚拟环境,但没有找到任何包。我不确定我是否缺少任何步骤,因为我对 linux 命令知之甚少。如何在我的环境变量中正确安装软件包?
sudo pip3 freeze

asgiref==3.4.1
blinker==1.3
certifi==2021.5.30
chardet==4.0.0
cloud-init==21.1
command-not-found==0.3
configobj==5.0.6
cryptography==1.2.3
dj-database-url==0.5.0
Django==3.2
django-cors-headers==3.7.0
django-countries==7.1
django-rest-framework==0.1.0
django-rest-resetpassword==0.1.2
djangorestframework==3.12.4
gunicorn==20.1.0
hibagent==1.0.1
idna==2.10
Jinja2==2.8
jsonpatch==1.10
jsonpointer==1.9
language-selector==0.1
MarkupSafe==0.23
oauthlib==1.0.3
prettytable==0.7.2
pyasn1==0.1.9
pycurl==7.43.0
pygobject==3.20.0
PyJWT==1.3.0
pyserial==3.0.1
python-apt==1.1.0b1+ubuntu0.16.4.12
python-debian==0.1.27
python-systemd==231
pytz==2021.1
PyYAML==3.11
requests==2.25.1
six==1.15.0
sqlparse==0.4.1
ssh-import-id==5.5
typing-extensions==3.10.0.2
ufw==0.35
unattended-upgrades==0.1
urllib3==1.26.6

最佳答案

发生错误是因为您使用 Sudo 安装了依赖项。
这仅为 Sudo 用户安装了您的 pip 依赖项,而您以非 sudo 用户身份运行 Django 应用程序。这就是为什么您在查看时没有看到您的包裹的原因 pip freeze但是你在做 sudo pip3 freeze 之后看到了它们
解决这个问题

  • 安装 python3-venv使用此命令 sudo apt-get install python3-venv
  • 创建虚拟环境python3 -m venv env此命令将创建一个名为 env 的虚拟环境
  • 使用此命令激活虚拟环境 source env/bin/activate

  • 完成此操作后,您将看到 (env)在你的 shell 之前表明你的虚拟环境被激活了,现在需要在这个里面安装依赖项
  • cd到你的 requirements.txt 并输入 pip3 install -r requirements.txt确保在没有 sudo 的情况下执行此操作(因为出于安全原因,您将在 Web 服务器中以非 sudo 特权用户身份运行 Django 应用程序)

  • 在此之后,您可以在虚拟环境保持事件状态的情况下运行 Django 应用程序。

    关于python - 如何修复 ModuleNotFoundError : No module named 'rest_framework' in Ubuntu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69094816/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com