在python中需要模块

时间:2014-04-27 01:53:12

标签: python

我确信这是一个非常简单的问题,但我似乎无法弄明白。我正在进入python,并以一个基本的“hello world”路由器为例。我想导出大部分代码,将应用程序扩展为多个文件。当所有代码都在一个文件中时,它可以正常工作,但当它被移动到2个单独的文件中时,就会发生轰炸。非常感谢任何帮助。

第一个文件

import re # first file
from Primer.Core.router import Router // second file, excluded when all code is in 1 file

# second file code here when combined

def application(environ, start_response):
    router = Router(environ, start_response)
    return router.run()

第二个文件

from cgi import escape


class Router:

def __init__(self, environ, start_response):
    self.environ = environ
    self.start_response = start_response

def run(self):
    path = self.environ.get('PATH_INFO', '').lstrip('/')
    if (path == 'hello')
        return 'hello'
    else
        return 'other'

2 个答案:

答案 0 :(得分:1)

如果这两个文件位于同一目录中,则应从import中删除前缀。

from router import Router

此外,您需要在包含要导入的文件的目录中创建一个空文件__init__.py

答案 1 :(得分:1)

现在,我在代码中看到了几个错误:

  1. 导入将失败,因为非Python注释(//)在其后写入。您应该使用#代替。
  2. 您应该检查文件的结构是否正确:

    ├── Primer │   ├── Core │   │   ├── __init__.py │   │   └── router.py │   ├── __init__.py └── index.py

  3. if课程中的elseRouter都缺少冒号:

    def run(self): path = self.environ.get('PATH_INFO', '').lstrip('/') if (path == 'hello'): return 'hello' else: return 'other' 此外,您的Router类中方法的缩进未在您的示例中正确设置,但我认为您的文件中没有...

  4. 我会检查错误是不是由于那个错误。