os.environ.setdefault('DJANGO_SETTINGS_MODULE') 不起作用

发布于 2025-01-15 01:12:28 字数 1337 浏览 1 评论 0原文

我正在尝试运行一个使用 Django 模型访问数据库的独立脚本。

该脚本非常简单,请参见下文:

import sys
from manager.models import Playlist
from manager.utils import clean_up_playlist, add_record_to_playlist

def main(playlist_id, username):
    playlist = Playlist.objects.get(playlists=playlist_id)
    # the script does other stuff


if __name__ == "__main__":
    playlist_id = sys.argv[1]
    username = sys.argv[2]
    import os
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'SpotifyPlaylistManager.settings')
    import django
    django.setup()
    main(playlist_id, username)

该脚本位于 Django 文件夹的顶部文件夹中

SpotifyPlaylistManager/
|-SpotifyPlaylistManager/
  |-settings.py
|-venv
|-manage.py
|-my_script.py

出于某种原因,如果我尝试使用下面的命令运行它,则会收到错误我

raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

需要启动的实际命令

source /home/nicola/PycharmProjects/SpotifyPlaylistManager/venv/bin/activate && python /home/nicola/PycharmProjects/SpotifyPlaylistManager/scheduler.py 6tIMeXF1Q9bB7KDywBhG2P nicoc && deactivate

我找不到问题

I'm trying to run a standalone script that uses the Django models for accessing the database.

The script is very simple, see below:

import sys
from manager.models import Playlist
from manager.utils import clean_up_playlist, add_record_to_playlist

def main(playlist_id, username):
    playlist = Playlist.objects.get(playlists=playlist_id)
    # the script does other stuff


if __name__ == "__main__":
    playlist_id = sys.argv[1]
    username = sys.argv[2]
    import os
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'SpotifyPlaylistManager.settings')
    import django
    django.setup()
    main(playlist_id, username)

The script is in the top folder of the Django folder

SpotifyPlaylistManager/
|-SpotifyPlaylistManager/
  |-settings.py
|-venv
|-manage.py
|-my_script.py

For some reason, if I try to run it with the command below I got the error

raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

The actual command I need to launch

source /home/nicola/PycharmProjects/SpotifyPlaylistManager/venv/bin/activate && python /home/nicola/PycharmProjects/SpotifyPlaylistManager/scheduler.py 6tIMeXF1Q9bB7KDywBhG2P nicoc && deactivate

I can't find the issue

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

在巴黎塔顶看东京樱花 2025-01-22 01:12:28

将 Django include 移动到主要工作中

if __name__ == "__main__":
    playlist_id = sys.argv[1]
    username = sys.argv[2]
    import os
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'SpotifyPlaylistManager.settings')
    import django
    django.setup()
    from manager.models import Playlist
    from manager.utils import clean_up_playlist, add_record_to_playlist

    main(playlist_id, username)

Moving the Django include inside the main worked

if __name__ == "__main__":
    playlist_id = sys.argv[1]
    username = sys.argv[2]
    import os
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'SpotifyPlaylistManager.settings')
    import django
    django.setup()
    from manager.models import Playlist
    from manager.utils import clean_up_playlist, add_record_to_playlist

    main(playlist_id, username)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文