【发布时间】:2021-11-04 17:46:09
【问题描述】:
我第一次尝试在 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 是第一位的。如果在已安装的应用程序中首先出现的是corshearder,则错误将是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
【问题讨论】:
-
尝试执行 pip freeze 并查看是否安装了软件包?所以我不太了解 EC2,但你需要在部署之前创建一个环境吗?
-
感谢@Rvector。
pip freeze没有输出任何值,但sudo pip3 freeze输出包但我安装的包不是ammong。请问我应该怎么做,因为我已经按照问题中的说明运行命令来安装它们,但是sudo pip3 freeze的输出中不存在已安装的软件包 -
如果您尝试
sudo pip3 freeze djangorestframework,您会得到什么?不要激活环境并再次安装requirements.txt -
现在安装
requirements.txt而不激活任何环境。只需输入sudo pip3 install -r requirements.txt。并运行你的服务器。 -
是的,这是一个错字。只需
sudo pip3 freeze
标签: python django ubuntu amazon-ec2