Python 2.7中相对导入的正确方法
我有一个烧瓶,我正在从Python 2.7中相对导入的正确方法,python,python-2.7,python-3.x,flask,Python,Python 2.7,Python 3.x,Flask,我有一个烧瓶,我正在从Python3迁移到Python2.7 我的项目结构如下: app/ model/ __init__.py exercise.py utils/ __init__.py loader.py exercise.py类包含类exercise。我需要在loader.py文件中使用它 app文件夹本身位于Heroku项目的顶层,该项目有一个run.py文件,该文件从Loader.py调用Loader类
Python3
迁移到Python2.7
我的项目结构如下:
app/
model/
__init__.py
exercise.py
utils/
__init__.py
loader.py
exercise.py
类包含类exercise
。我需要在loader.py
文件中使用它
app
文件夹本身位于Heroku项目的顶层,该项目有一个run.py
文件,该文件从Loader.py
调用Loader
类
以前我有:
from app.model.exercise import Exercise
但这在Python2.7中不起作用
附加到sys.path
似乎也不起作用
正确的方法是什么 文件夹不是Python包,除非它包含
\uuuu init\uuuu.py
。因此,除非app
文件夹包含\uuuu init\uuuuuuuuuuupy
文件,否则无法从app导入。根包在哪里?您的主要模块是在应用程序中还是在其他地方?您是否有未在此处显示的\uuuu init\uuuuu.py
文件,或者这实际上就是包结构?很可能是app.model.exercise中的,或者是model中的。exercise
是正确答案,但无论如何,至少在model/
目录中需要\uuu init\uuuu.py
。@DanielPryden我现在就更新结构。这里没有显示任何命名冲突吗?如果它在Python3.x上工作,但在2.x上不工作,那么from\uuuu future\uuuuu绝对导入
解决了吗?这表示路径上存在冲突的相对导入和绝对导入。@dmitrypoloskiy如果我理解正确,则不会。这就是问题所在。谢谢