python33的相对导入

时间:2013-12-07 13:56:33

标签: python import

我试图用python做一些编码练习。这是我的结构

mydir/
  template.py
  problem1/
    solution.py
  problem2/
    solution.py

我想在template.py中编写一些常用的人员,并在problem.py和problem2中的solution.py中导入它们,之后可能会出现问题。

我该怎么做才能做到这一点。   我曾经尝试在solution.py

中这样做
from .. import template

但失败了。

2 个答案:

答案 0 :(得分:1)

对于Python来说,这是一件非常棘手的事情。你试图用template.py做什么更适合第二个包用于常见的东西。只需将MyDev放在PYTHONPATH上。

所以我认为你会有更好的时间:

MyDev/
  common/
    myutils.py
  solutions/
    solution1.py
    solution2.py

在解决方案1中:

from common.myutils import awesome_func

这可以解释为什么它不适合你:

How to do relative imports in Python?

PEP8也有一些使用导入的好样式指南。基本上,用我自己的话来说,除非你为社区开发一个大包装,其中复杂性是必要的,进口开始变得过于冗长绝对进口是可行的。

使用相对导入的代码库的一个很好的例子是SQLAlchemy

答案 1 :(得分:0)

您可以执行以下操作: import sys 然后:sys.path.append('../') 如果您现在导入template,它应该可以正常工作。