簡體   English   中英

運行Django應用程序與在Python中運行主模塊時路徑之間的差異

[英]Discrepancy between path when running Django app vs. running main module in Python

我有一個Django網絡應用程序,其目錄/文件結構如下:

matrix/
    matrix/
        settings.py
        __init__.py
    view/
        get_matrix.py
        __init__.py
    settings.py
    __init__.py

settings.py (頂級目錄中的那個)是一個帶有屬性的簡單單行:

SOME_PROPERTY="FOO"

最后這是get_matrix.py

import settings

def foo_bar_op():
    print settings.PROPERTY

if __name__ == "__main__":
    foo_bar_op()

問題

當我運行網絡應用程序時,它運行正常,沒有問題。 但是,當我自己運行python get_matrix.py ,我收到此錯誤:

ImportError: No module named settings

我在web-app運行時查看了sys.path ,它包含頂級目錄作為第一個條目。 這可以解釋它是如何找到settings.py

為什么主模塊沒有找到settings.py 難道有兩個名為matrix目錄嗎?

因為在Django外部運行時,settings.py不在PYTHONPATH上。 嘗試這個:

try:
    import settings
except ImportError,err:
    import sys
    sys.path.append("../")
    import settings


def foo_bar_op():
    print settings.PROPERTY

if __name__ == "__main__":
    foo_bar_op()

這是編寫由Django和獨立進程共享的代碼的常見模式。 特別是如果你想在Django之外使用為Django編寫的ORM類。 然后,您還可以為獨立腳本提供准系統“fake_django_settings.py”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM