jjzjj

python - 在 Apache 上部署 Django 时出错

coder 2024-06-20 原文

我有一个小型 Django 网站,我试图在 Apache 2.2 HTTP 服务器上运行。 该应用程序使用“python manage.py runserver”运行良好。

Django 版本:1.0.2 final
python :2.5
操作系统:Windows 2000

我没有完成 documentation 中描述的步骤经过一些摆弄之后,在我的 httpd.conf 中出现了以下内容。

<Location "/therap/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE settings
PythonOption django.root /therap
PythonDebug On
PythonPath "['D:/therap/therap'] + sys.path"
</Location>

MaxRequestsPerChild 1

D:\therap\therap 在我的 manage.py 所在的地方。

当我尝试在浏览器中打开时,我看到 Django 使用的样式错误(与白色背景上的黑色信使相反。)

ImportError at /

No module named therap.urls

Request Method: GET
Request URL:    http://****:8080/
Exception Type: ImportError
Exception Value:   

No module named therap.urls

Exception Location: C:\python25\lib\site-packages\django\core\urlresolvers.py in _get_urlconf_module, line 200
Python Executable:  C:\Programme\Apache Software Foundation\Apache2.2\bin\httpd.exe
Python Version:     2.5.1
Python Path:        ['D:/therap/therap', 'C:\\WINNT\\system32\\python25.zip', 'C:\\Python25\\Lib', 'C:\\Python25\\DLLs', 'C:\\Python25\\Lib\\lib-tk', 'C:\\Programme\\Apache Software Foundation\\Apache2.2', 'C:\\Programme\\Apache Software Foundation\\Apache2.2\\bin', 'C:\\Python25', 'C:\\Python25\\lib\\site-packages', 'C:\\Python25\\lib\\site-packages\\pyserial-2.2', 'C:\\Python25\\lib\\site-packages\\win32', 'C:\\Python25\\lib\\site-packages\\win32\\lib', 'C:\\Python25\\lib\\site-packages\\Pythonwin', 'C:\\Python25\\lib\\site-packages\\wx-2.8-msw-unicode']
Server time:        Mo, 23 Mär 2009 16:27:03 +0100

在D:\therap\therap中有一个urls.py。 但是在我的大部分代码所在的 D:\therap\therap\main 中没有。

然后我尝试使用父文件夹

<Location "/therap/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE therap.settings
    PythonOption django.root /therap
    PythonDebug On
    PythonPath "['D:/therap'] + sys.path"

</Location>

MaxRequestsPerChild 1

这给了我一个不同的错误:

MOD_PYTHON ERROR

ProcessId:      2424
Interpreter:    '***'

ServerName:     '****'
DocumentRoot:   'C:/Programme/Apache Software Foundation/Apache2.2/htdocs'

URI:            '/therap/'
Location:       '/therap/'
Directory:      None
Filename:       'C:/Programme/Apache Software Foundation/Apache2.2/htdocs/therap'
PathInfo:       '/'

Phase:          'PythonHandler'
Handler:        'django.core.handlers.modpython'

Traceback (most recent call last):

  File "C:\Python25\Lib\site-packages\mod_python\importer.py", line 1537, in HandlerDispatch
    default=default_handler, arg=req, silent=hlist.silent)

  File "C:\Python25\Lib\site-packages\mod_python\importer.py", line 1229, in _process_target
    result = _execute_target(config, req, object, arg)

  File "C:\Python25\Lib\site-packages\mod_python\importer.py", line 1128, in _execute_target
    result = object(arg)

  File "C:\Python25\lib\site-packages\django\core\handlers\modpython.py", line 228, in handler
    return ModPythonHandler()(req)

  File "C:\Python25\lib\site-packages\django\core\handlers\modpython.py", line 201, in __call__
    response = self.get_response(request)

  File "C:\python25\Lib\site-packages\django\core\handlers\base.py", line 67, in get_response
    response = middleware_method(request)

  File "C:\python25\Lib\site-packages\django\middleware\locale.py", line 17, in process_request
    translation.activate(language)

  File "C:\python25\Lib\site-packages\django\utils\translation\__init__.py", line 73, in activate
    return real_activate(language)

  File "C:\python25\Lib\site-packages\django\utils\translation\trans_real.py", line 209, in activate
    _active[currentThread()] = translation(language)

  File "C:\python25\Lib\site-packages\django\utils\translation\trans_real.py", line 198, in translation
    default_translation = _fetch(settings.LANGUAGE_CODE)

  File "C:\python25\Lib\site-packages\django\utils\translation\trans_real.py", line 183, in _fetch
    app = __import__(appname, {}, {}, [])

ImportError: No module named main

我确实使用了国际化模块,但此时我不明白为什么它会导致问题。

“main”是唯一的 Django 应用程序(包含 View 、模型、表单等)的名称。完整路径为 D:\therap\therap\main。

我将 __init__.py 文件放在从主文件夹到 d:\therap 的所有位置。

现在我不知道我还能做什么。有什么想法吗?

最佳答案

问题是您正在导入您的应用程序(“main”),就好像它直接存在于 Python 路径中,而您的 URLconf(“therap.urls”)就好像它存在于 Python 上的“therap”模块中小路。这只有在“D:/therap”和“D:/therap/therap”都在 Python 路径上时才有效(runserver 会自动为您“让事情变得简单”;尽管它最终只是延迟了困惑,直到部署时间)。您可以通过在 Apache 配置中使用以下行来模拟 runserver 的行为:

PythonPath "['D:/therap', 'D:/therap/therap'] + sys.path"

标准化您的引用可能更有意义,因此您的 Python 路径只需要包含一个或另一个。通常的方式(至少是我经常看到的方式)是将“D:\therap”放在 Python 路径上,并将您的应用程序限定为“therap.main”,而不仅仅是“main”。就我个人而言,我采用了相反的方法并且效果很好:将“D:\therap\therap”放在您的 Python 路径中并将 ROOT_URLCONF 设置为“urls”而不是“therap.urls”。这样做的好处是,如果将来你想让你的“主”应用程序可重用并将其移出特定项目,你对它的引用不会与项目名称“therap”相关联(尽管应用程序名为“main”,这听起来不像是在考虑可重复使用的应用程序。

关于python - 在 Apache 上部署 Django 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/673936/

有关python - 在 Apache 上部署 Django 时出错的更多相关文章

  1. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  2. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

    我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.

  3. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  4. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  5. Python 相当于 Perl/Ruby ||= - 2

    这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。

  6. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  7. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  8. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  9. python - 如何读取 MIDI 文件、更改其乐器并将其写回? - 2

    我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的

  10. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

随机推荐