ImportError:没有名为“config.settings”的模块;“config”不是包

2024-05-18 12:24:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图让我的cookiecutter django应用程序在Apache下运行,并通过pip安装mod_wsgi。

python3 manager.py runserver有效。

但是在Apache中运行之后,我得到一个错误,说找不到模块配置。所以我pip install config。(它没有安装在我的开发系统上。)

在my/usr/local/pulseenv/lib/python3.5/site-packages中放了一个config.py文件。

那个文件有各种语法错误,我都修正了。据我所知,这些错误是由于Python2.7和3.5之间的更改造成的。

但现在我犯了这个错误,我陷入了困境:

ImportError: No module named 'config.settings'; 'config' is not a package

我在错误中看不到任何线索。请登录以了解如何进一步跟踪错误。那么这个模块是什么?为什么我需要它?如何解决我的问题呢?

编辑:

这是我的vhost文件(/etc/apache2/sites available/000 default.conf):

<VirtualHost *:80>

        ServerAdmin webmaster@localhost
        #DocumentRoot /var/www/html
        DocumentRoot /var/www/pulsemanager/pulsemanager


            Alias /static /var/www/pulsemanager/pulsemanager/static
            <Directory /var/www/pulsemanager/pulsemanager/static>
                Require all granted
            </Directory>

            <Directory /var/www/pulsemanager/config>
                <Files wsgi.py>
                    Require all granted
                </Files>
            </Directory>

           WSGIScriptAlias / /var/www/pulsemanager/config/wsgi.py
           WSGIDaemonProcess pulsemanager
           WSGIProcessGroup pulsemanager
           WSGIApplicationGroup %{GLOBAL}

    </VirtualHost>

我的项目分为:

ubuntu@ip-172-31-84-213:/var/www/pulsemanager$ ls
conf              docs         instantdudiobook.ipynb  package.json         pytest.ini  reqs.txt      setup.cfg
config            env.example  LICENSE                 pulsemanager         README.md   reqs.txt.sav  survey2.txt
CONTRIBUTORS.txt  gulpfile.js  manage.py               pulsenotebook.ipynb  README.rst  requirements  utility
ubuntu@ip-172-31-84-213:/var/www/pulsemanager$ cd pulsemanager/
ubuntu@ip-172-31-84-213:/var/www/pulsemanager/pulsemanager$ ls
contrib  locale  lsrc3  static  surveys  templates  users
ubuntu@ip-172-31-84-213:/var/www/pulsemanager/pulsemanager$

这里是我的病毒环境:

ubuntu@ip-172-31-84-213:/usr/local/pulseenv$ ls
bin  include  lib  lib64  pip-selfcheck.json  pyvenv.cfg  share
ubuntu@ip-172-31-84-213:/usr/local/pulseenv$ cd lib
ubuntu@ip-172-31-84-213:/usr/local/pulseenv/lib$ pip3 list
Package                       Version
----------------------------- ----------------------
apturl                        0.5.2
argon2                        0.1.10
argon2-cffi                   18.1.0
arrow                         0.12.1
beautifulsoup4                4.4.1
binaryornot                   0.4.4
blinker                       1.3
Brlapi                        0.6.4
cairocffi                     0.8.0
certifi                       2018.1.18
cffi                          1.11.5
chardet                       3.0.4
checkbox-support              0.22
click                         6.7
config                        0.3.9
cloud-init                    18.2
command-not-found             0.3
configobj                     5.0.6
cookiecutter                  1.6.0
cryptography                  1.2.3
cssselect2                    0.2.1
cycler                        0.10.0
defer                         1.0.6
defusedxml                    0.5.0
Django                        2.0.3
django-admin-tools            0.8.1
django-allauth                0.35.0
django-autoslug               1.9.3
django-crispy-forms           1.7.2
django-debug-toolbar          1.9.1
django-environ                0.4.4
django-extensions             2.0.6
django-language-field         0.0.3
django-model-utils            3.1.1
feedparser                    5.1.3
future                        0.16.0
guacamole                     0.9.2
hibagent                      1.0.1
httplib2                      0.9.1
idna                          2.6
Jinja2                        2.8
jinja2-time                   0.2.0
jsonpatch                     1.10
jsonpointer                   1.9
language-selector             0.1
louis                         2.6.4
lxml                          3.5.0
Mako                          1.0.3
MarkupSafe                    0.23
oauthlib                      1.0.3
onboard                       1.2.0
padme                         1.1.1
pdfrw                         0.4
pexpect                       4.0.1
pip                           10.0.1
plainbox                      0.25
poyo                          0.4.1
prettytable                   0.7.2
ptyprocess                    0.5
pyasn1                        0.1.9
pycparser                     2.18
pycups                        1.9.73
pycurl                        7.43.0
pygobject                     3.20.0
PyJWT                         1.3.0
pyparsing                     2.0.3
Pyphen                        0.9.4
pyserial                      3.0.1
python-apt                    1.1.0b1+ubuntu0.16.4.1
python-dateutil               2.7.0
python-debian                 0.1.27
python-systemd                231
python3-openid                3.1.0
pytz                          2018.3
pyxdg                         0.25
PyYAML                        3.11
reportlab                     3.3.0
requests                      2.18.4
requests-oauthlib             0.8.0
sessioninstaller              0.0.0
setuptools                    39.1.0
six                           1.10.0
sqlparse                      0.2.4
ssh-import-id                 5.5
system-service                0.3
tinycss2                      0.6.1
ubuntu-drivers-common         0.0.0
ufw                           0.35
unattended-upgrades           0.1
unity-scope-calculator        0.1
unity-scope-chromiumbookmarks 0.1
unity-scope-colourlovers      0.1
unity-scope-devhelp           0.1
unity-scope-firefoxbookmarks  0.1
unity-scope-gdrive            0.7
unity-scope-manpages          0.1
unity-scope-openclipart       0.1
unity-scope-texdoc            0.1
unity-scope-tomboy            0.1
unity-scope-virtualbox        0.1
unity-scope-yelp              0.1
unity-scope-zotero            0.1
urllib3                       1.22
usb-creator                   0.3.0
webencodings                  0.5.1
wheel                         0.29.0
whichcraft                    0.4.1
xdiagnose                     3.8.4.1
xkit                          0.0.0
XlsxWriter                    0.7.3

编辑2:

我确实有一个配置目录:

ubuntu@ip-172-31-84-213:~$ cd /var/www/pulsemanager/config/
ubuntu@ip-172-31-84-213:/var/www/pulsemanager/config$ ls
__init__.py  __pycache__  settings  urls.py  wsgi.py
ubuntu@ip-172-31-84-213:/var/www/pulsemanager/config$ cd settings
ubuntu@ip-172-31-84-213:/var/www/pulsemanager/config/settings$ ls
base.py  __init__.py  local.py  production.py  __pycache__  test.py
ubuntu@ip-172-31-84-213:/var/www/pulsemanager/config/settings$

这是我的wsgi.py。似乎DJANGO_SETTINGS_模块应该默认为config.SETTINGS.production(/var/pulsemanager/config/SETTINGS/production.py):

"""
WSGI config for pulsemanager project.


"""
import os
import sys

from django.core.wsgi import get_wsgi_application

# This allows easy placement of apps within the interior
# pulsemanager directory.
app_path = os.path.dirname(os.path.abspath(__file__)).replace('/config', '')
sys.path.append(os.path.join(app_path, 'pulsemanager'))

if os.environ.get('DJANGO_SETTINGS_MODULE') == 'config.settings.production':
    from raven.contrib.django.raven_compat.middleware.wsgi import Sentry

# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks
# if running multiple sites in the same mod_wsgi process. To fix this, use
# mod_wsgi daemon mode with each site in its own daemon process, or use
# os.environ["DJANGO_SETTINGS_MODULE"] = "config.settings.production"
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.production")

# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
application = get_wsgi_application()
if os.environ.get('DJANGO_SETTINGS_MODULE') == 'config.settings.production':
    application = Sentry(application)
# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)

编辑3:

我删除了配置包。我敢肯定那是一条红鲱鱼。我在wsgi.py中看到了几个对“config”的引用,例如os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.production")app_path = os.path.dirname(os.path.abspath(__file__)).replace('/config', '')。这就是我的问题所在吗?

我将export DJANGO_SETTINGS_MODULE=config.settings.production添加到config/__init__.py中,甚至尝试将os.environ["DJANGO_SETTINGS_MODULE"] = "config.settings.production"放在wsgi.py顶部附近。

我将WSGIDaemonProcess更新为:

WSGIDaemonProcess pulsemanager python-home=/usr/local/pulseenv/  python-path=/var/www/pulsemanager/pulsemanager:/usr/local/pulseenv/lib/python3.5/site-packages 

但我还是觉得:

ImportError: No module named 'config'

下面是更多的error.log

    [Tue May 08 16:58:33.360155 2018] [mpm_event:notice] [pid 7420:tid 139690171062144] AH00489: Apache/2.4.18 (Ubuntu) OpenSSL/1.0.2g mod_wsgi/4.6.4 Python/3.5 configured -- resuming normal operations
    [Tue May 08 16:58:33.360248 2018] [core:notice] [pid 7420:tid 139690171062144] AH00094: Command line: '/usr/sbin/apache2'
    [Tue May 08 16:58:33.414142 2018] [wsgi:info] [pid 7423:tid 139690171062144] mod_wsgi (pid=7423): Attach interpreter ''.
    [Tue May 08 16:58:33.437248 2018] [wsgi:info] [pid 7423:tid 139690171062144] mod_wsgi (pid=7423): Adding '/var/www/pulsemanager/pulsemanager' to path.
    [Tue May 08 16:58:33.441845 2018] [wsgi:info] [pid 7423:tid 139690171062144] mod_wsgi (pid=7423): Adding '/usr/local/pulseenv/lib/python3.5/site-packages' to path.
    [Tue May 08 16:58:33.449915 2018] [wsgi:info] [pid 7423:tid 139690171062144] mod_wsgi (pid=7423): Imported 'mod_wsgi'.
    [Tue May 08 16:58:33.454029 2018] [wsgi:info] [pid 7423:tid 139690021156608] [remote 172.31.6.98:39831] mod_wsgi (pid=7423, process='pulsemanager', application=''): Loading Python script file '/var/www/pulsemanager/config/wsgi.py'.
    [Tue May 08 16:58:33.683108 2018] [wsgi:error] [pid 7423:tid 139690021156608] [remote 172.31.6.98:39831] mod_wsgi (pid=7423): Failed to exec Python script file '/var/www/pulsemanager/config/wsgi.py'.
    [Tue May 08 16:58:33.683161 2018] [wsgi:error] [pid 7423:tid 139690021156608] [remote 172.31.6.98:39831] mod_wsgi (pid=7423): Exception occurred processing WSGI script '/var/www/pulsemanager/config/wsgi.py'.
   ...

    [Tue May 08 16:59:13.003234 2018] [wsgi:error] [pid 7423:tid 139689928836864] [remote 172.31.93.15:41324] ImportError: No module named 'config'

Tags: djangopyipmodconfigwsgisettingsos
2条回答

您的DJANGO_SETTINGS_MODULE需要指定存在于项目根文件夹中的包或模块。

[pulsemanager]/
├── [config]/
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

使用virtualenv

WSGIPythonPath /path/to/mysite.com:/path/to/your/venv/lib/python3.X/site-packages 

使用mod_wsgi守护进程模式

WSGIDaemonProcess pulsemanager python-path=/path/to/pulsemanager:/path/to/venv/lib/pytho\
n2.7/site-packages
WSGIProcessGroup pulsemanager

对于在一个mod_wsgi进程中运行的多个站点,所有站点都将使用最先运行的站点的设置。这可以通过改变:

os.environ["DJANGO_SETTINGS_MODULE"] = "{{ project_name }}.settings.{{env}}"

更新wsgi.py

import os
import sys

from django.core.wsgi import get_wsgi_application

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pulsemanager.settings.production")

if os.environ.get("DJANGO_SETTINGS_MODULE") == "pulsemanager.settings.production":
    from raven.contrib.django.raven_compat.middleware.wsgi import Sentry
    application = Sentry(get_wsgi_application())
else:
    get_wsgi_application()

我曾经有过类似的问题:

$ py -3 bloody.py
Traceback (most recent call last):
  File "bloody.py", line 1, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

即使我遵循了Cisco Devnet网站上的说明,也会发生这种情况,该网站建议:

pip install requests

我最后跑的是:

py -2 -m pip install requests

py -3 -m pip install requests

这为Python 3和Python 2安装了requests

相关问题 更多 >

    热门问题