因此,我无法在同一目录中导入类并使其正常工作。
我目前有以下的hiearchy
我的问题出在bbsource
目录中的2个文件之间。我已经想出了如何从bbsource
目录访问objects
目录中的类,反之亦然,但是当我在from BouncyBallEnv import BouncyBallEnv
类中尝试Console
时得到以下错误:
File "E:\PycharmProjects\BouncyBallPythonV0\bbsource\Console.py", line 5, in
from BouncyBallENV import BouncyBallEnv
ImportError: cannot import name 'BouncyBallEnv'
我尝试了几件事:
from bbsource import BouncyBallEnv
from bbsource.BouncyBallEnv import BouncyBallEnv
但是我无法让它发挥作用。
我唯一能让它发挥作用的是我做了以下事情:
import bbsource.BouncyBallEnv
#Extra
print(bbsource.BouncyBallEnv.BouncyBallEnv.WIDTH)
但是必须有一个更好的方法来做到这一点,这样我每次想要使用静态变量时都不必输入print
语句中的冗长语句BouncyBallEnv
。
我仍然对Python导入的工作原理感到困惑,所以我不确定如何去做。谢谢。
注意:运行Python 3.5.1
答案 0 :(得分:2)
你需要的是别名:
import bbsource.BouncyBallEnv as bbe
#Extra
print(bbe.WIDTH)
并且您无法导入具有from ... import ...
语法的模块。只有属性。它的工作原理如下:
import <module> [as <alias>]
or
from <module> import <attribute> [, <attribute2>...] # import some attributes
from <module> import * # import everything
第二个,你可以做到:
from bbsource.BouncyBallEnv import WIDTH
# the variable WIDTH is directly loaded : watch out for collision !
print(WIDTH)
答案 1 :(得分:1)
这是abosolue_import规则。
试
from .BouncyBallENV import BouncyBallEnv
以相对位置访问模块。
此外,__init__.py
目录
bbsource
文件