在 Elastic Beanstalk 上部署时找不到模块 Django

Posted

技术标签:

【中文标题】在 Elastic Beanstalk 上部署时找不到模块 Django【英文标题】:Cant find module Django while deploying on Elastic Beanstalk 【发布时间】:2017-02-24 01:25:43 【问题描述】:

我正在尝试在 Elastic Beanstalk 上部署此存储库 https://github.com/LaunchKit/LaunchKit 的后端。 我对 Django 很陌生,我成功完成了这两个教程,解释了如何在 Elastic Beanstalk 上部署 Django: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html https://realpython.com/blog/python/deploying-a-django-app-and-postgresql-to-aws-elastic-beanstalk/

我一直收到消息 ImportError: No module named 'django'

这是我的文件结构的一部分,位于“firekit”文件夹中

├── LICENSE
├── README.md
├── backend
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── celery_app.py
│   ├── celery_app.pyc
│   ├── lk
│   │   ├── __init__.py
│   │   ├── __init__.pyc
│   │   ├── logic
│   │   ├── migrations
│   │   ├── models
│   │   ├── oauth_middleware.py
│   │   ├── oauth_middleware.pyc
│   │   ├── tasks.py
│   │   ├── templates
│   │   ├── templatetags
│   │   ├── urls.py
│   │   ├── urls.pyc
│   │   └── views
│   ├── manage.py
│   ├── middleware.py
│   ├── middleware.pyc
│   ├── requirements.txt
│   ├── settings.py
│   ├── settings.pyc
│   ├── site_media
│   │   └── images -> ../../skit/lk/__static__/images
│   ├── templates
│   │   └── robots.txt
│   ├── urls.py
│   ├── urls.pyc
│   ├── util
│   │   ├── __init__.py
│   │   ├── __init__.pyc
│   │   ├── bitwise.py
│   │   ├── bitwise.pyc
│   │   ├── cryptoid.py
│   │   ├── cryptoid.pyc
│   │   ├── dnsutil.py
│   │   ├── dnsutil.pyc
│   │   ├── enum.py
│   │   ├── enum.pyc
│   │   ├── environment_loader.py
│   │   ├── hstore_field.py
│   │   ├── hstore_field.pyc
│   │   ├── html_to_text.py
│   │   ├── html_to_text.pyc
│   │   ├── lkforms.py
│   │   ├── lkforms.pyc
│   │   ├── multipart.py
│   │   ├── text.py
│   │   ├── text.pyc
│   │   ├── urlutil.py
│   │   ├── urlutil.pyc
│   │   ├── urlviews.py
│   │   └── urlviews.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
├── devproxy.go
├── frontend_firekit
│   ├── JSXTransformer.js
│   ├── app.js
│   ├── lk
│   │   ├── __static__
│   │   ├── library
│   │   ├── public
│   │   ├── public_hosted
│   │   └── third_party
│   ├── node_modules
│   │   ├── accepts
│   │   ├── acorn
│   │   ├── align-text
│   │   ├── amdefine
│   │   ├── ansi-regex
│   │   ├── ansi-styles
│   │   ├── asn1
│   │   ├── assert-plus
│   │   ├── async
│   │   ├── aws-sign2
│   │   ├── aws4
│   │   ├── bcrypt-pbkdf
│   │   ├── bl
│   │   ├── body-parser
│   │   ├── boom
│   │   ├── bytes
│   │   ├── camelcase
│   │   ├── caseless
│   │   ├── center-align
│   │   ├── chalk
│   │   ├── cliui
│   │   ├── combined-stream
│   │   ├── commander
│   │   ├── compressible
│   │   ├── compression
│   │   ├── connect
│   │   ├── content-type
│   │   ├── cookies
│   │   ├── core-util-is
│   │   ├── cryptiles
│   │   ├── dashdash
│   │   ├── debug
│   │   ├── decamelize
│   │   ├── delayed-stream
│   │   ├── depd
│   │   ├── destroy
│   │   ├── ecc-jsbn
│   │   ├── ee-first
│   │   ├── escape-html
│   │   ├── escape-string-regexp
│   │   ├── etag
│   │   ├── eventemitter3
│   │   ├── extend
│   │   ├── extsprintf
│   │   ├── finalhandler
│   │   ├── forever-agent
│   │   ├── form-data
│   │   ├── fresh
│   │   ├── generate-function
│   │   ├── generate-object-property
│   │   ├── getpass
│   │   ├── graceful-readlink
│   │   ├── handlebars
│   │   ├── har-validator
│   │   ├── has-ansi
│   │   ├── hawk
│   │   ├── hoek
│   │   ├── http-errors
│   │   ├── http-proxy
│   │   ├── http-signature
│   │   ├── iconv-lite
│   │   ├── inherits
│   │   ├── is-buffer
│   │   ├── is-my-json-valid
│   │   ├── is-property
│   │   ├── is-typedarray
│   │   ├── isarray
│   │   ├── isstream
│   │   ├── jodid25519
│   │   ├── jsbn
│   │   ├── json-schema
│   │   ├── json-stringify-safe
│   │   ├── jsonpointer
│   │   ├── jsprim
│   │   ├── keygrip
│   │   ├── kind-of
│   │   ├── lazy-cache
│   │   ├── lodash
│   │   ├── longest
│   │   ├── media-typer
│   │   ├── mime
│   │   ├── mime-db
│   │   ├── mime-types
│   │   ├── minimist
│   │   ├── ms
│   │   ├── negotiator
│   │   ├── node-uuid
│   │   ├── oauth-sign
│   │   ├── on-finished
│   │   ├── on-headers
│   │   ├── optimist
│   │   ├── parseurl
│   │   ├── pinkie
│   │   ├── pinkie-promise
│   │   ├── process-nextick-args
│   │   ├── qs
│   │   ├── range-parser
│   │   ├── raw-body
│   │   ├── readable-stream
│   │   ├── repeat-string
│   │   ├── request
│   │   ├── requires-port
│   │   ├── right-align
│   │   ├── send
│   │   ├── setprototypeof
│   │   ├── skit
│   │   ├── sntp
│   │   ├── source-map
│   │   ├── sshpk
│   │   ├── statuses
│   │   ├── string_decoder
│   │   ├── stringstream
│   │   ├── strip-ansi
│   │   ├── supports-color
│   │   ├── tough-cookie
│   │   ├── tunnel-agent
│   │   ├── tweetnacl
│   │   ├── type-is
│   │   ├── uglify-js
│   │   ├── uglify-to-browserify
│   │   ├── unpipe
│   │   ├── util-deprecate
│   │   ├── utils-merge
│   │   ├── vary
│   │   ├── verror
│   │   ├── window-size
│   │   ├── wordwrap
│   │   ├── xtend
│   │   └── yargs
│   ├── package.json
│   └── settings.js
├── gae
│   ├── app.yaml
│   ├── favicon.ico
│   ├── index.yaml
│   ├── launchkit_images
│   │   ├── __init__.py
│   │   ├── basehandler.py
│   │   ├── blobinternalhandlers.py
│   │   ├── blobpublichandlers.py
│   │   ├── models.py
│   │   └── util.py
│   ├── main.py
│   └── third_party
│       ├── __init__.py
│       └── poster
├── manage.py
├── requirements.txt
├── review_ingester.py
└── venv
    ├── bin
    │   ├── activate
    │   ├── activate.csh
    │   ├── activate.fish
    │   ├── activate_this.py
    │   ├── easy_install
    │   ├── easy_install-2.7
    │   ├── pip
    │   ├── pip2
    │   ├── pip2.7
    │   ├── python
    │   ├── python-config
    │   ├── python2 -> python
    │   ├── python2.7 -> python
    │   └── wheel
    ├── include
    │   └── python2.7 -> /Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
    ├── lib
    │   └── python2.7
    └── pip-selfcheck.json

02_python.config

option_settings:
"aws:elasticbeanstalk:application:environment":
  DJANGO_SETTINGS_MODULE: "settings"
  "PYTHONPATH": "/opt/python/current/app:$PYTHONPATH"
  "aws:elasticbeanstalk:container:python":
    WSGIPath: backend/wsgi.py

后端/wsgi.py

import os
import sys    

sys.path.insert(0, '/opt/python/current/app')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

您知道为什么我一直收到“没有名为 'django' 的模块”错误消息吗?非常感谢您的帮助!

编辑

requirements.txt

boto==2.38.0
celery[redis]==3.1.17
cssutils==1.0.1
django-bitfield==1.7.1
Django==1.7.3
djorm-pgarray==1.2.0
dnspython==1.12.0
fabric==1.10.1
hiredis==0.1.5
Pillow==3.0.0
premailer==1.3.0
psycopg2==2.5.4
pycrypto==2.6.1
pylint==0.28.0
python-memcached==1.53
redis==2.10.3
requests==2.5.3
sqlalchemy==0.9.8
tweepy==3.3.0
ua-parser==0.3.6

当我在本地运行 pip freeze 时,它会说:

amqp==1.4.9
ansible==2.1.1.0
anyjson==0.3.3
awsebcli==3.7.8
beautifulsoup4==4.1.3
billiard==3.3.0.23
bleach==1.4
blessed==1.9.5
boto==2.38.0
botocore==1.4.61
Cartridge==0.9.4
celery==3.1.17
cement==2.8.2
cffi==1.8.3
colorama==0.3.7
cryptography==1.5.1
cssselect==0.9.1
cssutils==1.0.1
Django==1.7.3
django-bitfield==1.7.1
djorm-pgarray==1.2
dnspython==1.12.0
docker-py==1.7.2
dockerpty==0.4.1
docopt==0.6.2
docutils==0.12
enum34==1.1.6
Fabric==1.10.1
filebrowser-safe==0.3.5
future==0.9.0
gnureadline==6.3.3
grappelli-safe==0.3.12
hiredis==0.1.5
html5lib==0.999
idna==2.1
image==1.2
ipaddress==1.0.17
ipython==2.0.0
Jinja2==2.8
jmespath==0.9.0
kombu==3.0.37
logilab-astng==0.24.3
logilab-common==1.2.2
lxml==3.3.0
MarkupSafe==0.23
matplotlib==1.4.0
mercurial==3.7.1+20160203
Mezzanine==3.1.8
mock==1.0.1
mysql-python==1.2.5
nose==1.3.4
numpy==1.9.0
oauthlib==0.6.3
pandas==0.14.1
paramiko==2.0.2
pathspec==0.3.4
PIL==1.1.7
Pillow==3.0.0
premailer==1.3.0
psycopg2==2.5.4
pyasn1==0.1.9
pycparser==2.14
pycrypto==2.6.1
pylint==0.28.0
pymongo==2.7
PyMySQL==0.6.2
pyparsing==2.0.2
PyPDF2==1.22
python-dateutil==2.5.3
python-magic==0.4.12
python-memcached==1.53
pytz==2014.4
PyYAML==3.12
queuelib==1.1.1
redis==2.10.3
reportlab==3.1.8
requests==2.9.1
requests-oauthlib==0.4.1
s3cmd==1.6.1
Scrapy==0.22.0
semantic-version==2.5.0
six==1.10.0
SQLAlchemy==0.9.8
texttable==0.8.4
tweepy==3.3.0
tzlocal==1.0
ua-parser==0.3.6
vboxapi==1.0
virtualenv==15.0.3
w3lib==1.5
wcwidth==0.1.7
websocket-client==0.37.0
xhtml2pdf==0.0.6

我尝试了这两种配置,但我一直遇到同样的错误。

EDIT2

还是一样的错误

我在 EB 中进行了 ssh。 查找站点包。 将找到的所有路径添加到 wsgi.py

/opt/python/run/baselinenv/lib64/python3.4/site-packages
/opt/python/run/baselinenv/lib/python3.4/site-packages
/opt/python/run/venv/lib64/python3.4/site-packages
/opt/python/run/venv/lib/python3.4/site-packages
/usr/lib64/python2.7/site-packages
/usr/lib/python2.7/site-packages
/usr/local/lib64/python3.4/site-packages
/usr/local/lib64/python2.7/site-packages
/usr/local/lib/python3.4/site-packages
/usr/local/lib/python2.7/site-packages

【问题讨论】:

你的 requirements.txt 文件中有什么? 添加 requirements.txt 签出:***.com/questions/21098859/…。您可能还需要 wsgi.py 中的虚拟环境路径。 谢谢!我怎么知道我的虚拟环境路径是什么? 您可以通过 SSH 到 EB 实例进行验证,但如果我理解其他文章,它总是相同的路径。 【参考方案1】:

这是超级旧的,但我正在经历同样的事情。我发现我的应用程序没有使用我正在部署的更改进行更新,原因是因为我在我的文件夹中使用了 git 并且我没有提交这些更改,所以部署继续部署以前提交的代码。

以防万一有人穿过我今天穿过的同一个兔子洞。

【讨论】:

谢谢!简单的 git commit -m "local changes" 和 eb deploy 为我修复了它!

以上是关于在 Elastic Beanstalk 上部署时找不到模块 Django的主要内容,如果未能解决你的问题,请参考以下文章

在 Elastic Beanstalk 上部署 Docker 环境

在 Elastic Beanstalk 上部署 Wordpress 的多个问题

在 Elastic Beanstalk 上部署 Pyramid 应用程序

在 Elastic Beanstalk 上部署 WordPress?

Elastic Beanstalk 未部署在所有实例上

在 Elastic Beanstalk 上部署 NestJS 应用程序