web-dev-qa-db-ja.com

Python3.7 ImportError: 'Django'という名前のモジュールはありません

数日前にpythonをバージョン2.7から3.7に更新することにしました。これが私の現在の設定です:

Ubuntu 16.04
Python 3.7.7
Django 3.0.6
Apache/2.4.18

コマンドpython -m venv --system-site-packages /var/www/path/to/myenvを使用して仮想環境を作成しました。この環境をアクティブ化した後、新しいプロジェクトを作成しました。環境へのパスは/var/www/path/to/myenvのようになり、プロジェクトへのパスは/var/www/path/to/myenv/myprojectのようになります。 myproject.confの構成は次のようになります。

<VirtualHost *:80>
    ServerName myproject.com
    ServerAlias www.myproject.com
    WSGIDaemonProcess myproject processes=2 threads=15 display-name=%{GROUP} python-home=/var/www/path/to/myenv python-path=/var/www/path/to/myenv/myproject
    WSGIProcessGroup candyhand

    WSGIScriptAlias /   /var/www/path/to/myenv/myproject/myproject/wsgi.py

    <Directory /var/www/path/to/myenv/myproject/myproject/>
    <Files wsgi.py>
        Require all granted
    </Files>
    </Directory>

    <Directory /var/www/path/to/myenv/myproject/>
        Require all granted
    </Directory>

    CustomLog /var/www/path/to/myenv/myproject/logs/Apache_access.log combined
    ErrorLog /var/www/path/to/myenv/myproject/logs/Apache_error.log

    Alias /static/ /var/www/path/to/myenv/myproject/static/
    <Directory /var/www/path/to/myenv/myproject/>
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>


    Alias /media/ /var/www/path/to/myenv/myproject/media/
    <Directory /var/www/path/to/myenv/myproject/>
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

しかし、Apacheサーバーからエラー500が出ました。 Apacheサーバーのログは次のとおりです。

mod_wsgi (pid=9495): Target WSGI script '/var/www/path/to/myenv/myproject/myproject/wsgi.py' cannot be loaded as Python module.
[Wed May 20 16:25:08.145621 2020] [wsgi:error] [pid 9495]  mod_wsgi (pid=9495): Exception occurred processing WSGI script '/var/www/path/to/myenv/myproject/myproject/wsgi.py'.
[Wed May 20 16:25:08.145788 2020] [wsgi:error] [pid 9495]  Traceback (most recent call last):
[Wed May 20 16:25:08.145864 2020] [wsgi:error] [pid 9495]   File "/var/www/path/to/myenv/myproject/myproject/wsgi.py", line 12, in <module>
[Wed May 20 16:25:08.145885 2020] [wsgi:error] [pid 9495]      from Django.core.wsgi import get_wsgi_application
[Wed May 20 16:25:08.145945 2020] [wsgi:error] [pid 9495]  ImportError: No module named 'Django'

これに応じてVirtualHostを設定しました documentation ですが、どこかで間違えた可能性があります。アドバイスをありがとうございます。

追伸python manage.py runserverコマンドは適切に実行されます

9

この問題は、python -m venvがvirtualenv内にactivate_this.pyを生成しない可能性が高いです。 https://modwsgi.readthedocs.io/en/develop/user-にあるドキュメントをご覧ください。 guides/virtual-environments.html#daemon-mode-multiple-applications

「説明されているようにWSGIスクリプトファイル内からPython仮想環境をアクティブ化する必要がある場合、virtualenvまたはvirtualenvwrapperを使用してPython仮想環境を作成することをお勧めします。これは両方ともsys.pathを設定するすべての作業を行うactivate_this.pyスクリプトファイルを提供します。pyvenvまたはpython -m venvをPython 3で使用すると、そのようなアクティブ化スクリプトは提供されません。

[〜#〜]編集[〜#〜]

Mod_wsgi v4.6.1がpython -m venvによって作成された仮想環境を適切に処理しているように見えますが、mod_wsgiはvirtualenvとまったく同じpythonバージョンを使用する必要があります(mod_wsgiはpython virtualenvからのインタープリター。wsgi.py内のpythonバージョンをチェックして、mod_wsgiが正しいバージョンを使用していることを確認してください)。インタープリターのバージョンが間違っている場合は、グローバルpythonパッケージを正しいバージョン番号に更新した後、mod_wsgiを再インストールする必要があります。

1
Nico M

それらのligneをApache2.confに挿入したかどうかを確認してください:

WSGIPythonPath /usr/local/lib/python3.7/dist-packages
WSGILazyInitialization On
WSGIApplicationGroup %{GLOBAL}

Wsgi.py + Apacheログファイルの先頭を共有してください

0
Houda

VirtualHostの外部に以下を追加します:WSGIPythonHome/var/www/path/to/myenv

0
Beck