python - 如何正确添加wsgi的路径?

标签 python

我有一个用 python 编写的网络应用程序,要在 public_html 上部署和使用它,我有一个简短的 Main.wsgi,其中包含以下内容:

#!/usr/bin/python
# -*- encoding: utf-8 -*
import sys, os
from werkzeug.wrappers import Request
from PageManager import PageManager
import werkzeug.contrib.sessions as sessions

fsstore = sessions.FilesystemSessionStore()

sys.path.append(os.path.dirname(__file__))
os.chdir(os.path.dirname(__file__))

@Request.application
def app(request):
    pm = PageManager()
    session = request.environ["werkzeug.session"]
    return pm.processPage(request)

#application = app
application=sessions.SessionMiddleware(app,fsstore)

if __name__ == "__main__":
    from werkzeug.serving import run_simple
    run_simple("localhost", 8080, application,
               use_reloader=False, use_debugger=True)

现在的问题是,当我尝试导航到这个 .wsgi 时,我收到以下错误:

ImportError: No module named PageManager

这是文件夹结构

WebApp_1/
├── aufg1
│   ├── ...
├── aufg2
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── Main.py
│   ├── Main.pyc
│   ├── PageRenderer.py
│   ├── PageRenderer.pyc
│   ├── SQLSecurity.pyc
│   └── Testing.py
├── GeneralTools
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── Main.wsgi
│   ├── PageManager.py
│   ├── PageManager.pyc

最佳答案

您应该将您的应用程序打包到一个包中。这样层次结构看起来类似于:

webapp1
  |
  +---- __init__.py
  |
  +---- aufg1 (python package)
  |       |
  |       +-- ...
  +---- aufg2
  |       |
  |       +-- __init__.py
  |       +-- all your other modules.py
  +---- generaltooks
          |
          +-- ...

您还应该改掉使用 CamelCasing 命名包和模块的习惯。相反,将它们转换为小写 - generictools、pagemanager 等。

接下来,像这样更新您的导入:

import sys, os
from werkzeug.wrappers import Request
from webapp1.generaltools.pagemanager import PageManager
# If you do not rename your modules to lowercase, then use this import
# instead of the one above.
from WebApp_1.GeneralTools.PageManager import PageManager
import werkzeug.contrib.sessions as sessions

然后运行您的脚本。您需要位于包 webapp1 之上的目录(以便能够导入 webapp1)。

关于python - 如何正确添加wsgi的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23760214/

相关文章:

python - 通过 CmdMessenger 与 Arduino 和 Python 通信,不起作用

python - Gekko:计算一个变量,该变量是前一个和当前时间步值的函数

python - 如何使用 Visual Studio Code 单步执行依赖项代码?

python - python列表和元组文字中的评估顺序

python - 无法导入 Python-Twitter

python - 将 boto3 输出转换为方便的格式

python - 如何向散点图添加图例?

python - 使用pygresql(pg模块)执行SQL select in语句

python - 如何加速pandas申请字符串匹配

python - 使用来自另一个 python 文件的命令行参数调用 Python 文件