我已经尝试添加以下行到我的处理程序脚本(main.py),但它似乎没有工作时:

  

sys.path.append( '子目录')

subdir生活在我的根目录(即,包含一个app.yaml)。

这似乎并没有工作,因为当我尝试导入模块住在subdir,我的应用程序爆炸。

有帮助吗?

解决方案

1)确保您在__init__.py空白subdir文件。

1)用完整路径;是这样的:

import os
import sys

sys.path.append(os.path.join(os.path.dirname(__file__), 'subdir'))

编辑:供应评论问答题更多信息。

作为尼克约翰逊演示可以放置在这三个行代码文件调用fix_path.py。然后,在你的main.py文件,所有其他进口之前做到这一点import fix_path链接到使用这种技术一个测试的应用程序。

并且,是,需要__init__.py文件;每文档

  

当导入软件包,Python的   通过对目录搜索   sys.path中寻找包   子目录。

     

__init__.py文件都需要   使Python视该目录为   一个包;这样做是为了   防止某些目录有一个共同的   名称,如字符串,从   无意中在有效模块   后来发生在模块搜索   路径。在最简单的情况下,   __init__.py可以只是一个空文件,但它也可以执行初始化   为包代码或设置   __all__变量,后面进行说明。

其他提示

它为我插入新的显示目录中的sys.path第一条目。

path_changer.py:

import os
import sys

sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'libs'))
sys.path.insert(1, os.path.join(os.path.dirname(__file__), 'apps'))

app.py:

import path_changer
from google.appengine.ext.webapp.util import run_wsgi_app

from flask import Flask
import settings

app = Flask('myapp')
app.config.from_object('settings')

from website import views as website_views

run_wsgi_app(app)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top