Python3.5.1在同一目录中导入类

2024-09-28 01:33:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在正确导入这些类时遇到了同样的麻烦。在

我目前有以下等级

  • 在BBDriver.py在
  • bbs来源:
    • 在BouncyBallEnv.py在
    • 在控制台.py在
  • 资源:
    • 其他:
    • 对象:
      • 在球.py在
      • 在平台.py在

我的问题是在bbsource目录中的两个文件之间。我已经知道了如何从bbsource目录到objects目录中的类的访问,反之亦然,但是当我试图在Console类中from BouncyBallEnv import BouncyBallEnv时,我得到了以下错误:

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

但我不能让它工作。在

我唯一能让它发挥作用的时候就是我做了以下事情:

^{pr2}$

但是必须有更好的方法来完成它,这样我就不必每次想在BouncyBallEnv中使用静态变量时都在print语句中键入冗长的语句。在

对于Python导入是如何工作的,我仍然很困惑,所以我不确定如何进行这项工作。谢谢您。在

注意:运行python3.5.1


Tags: 对象方法frompyimport目录来源平台
2条回答

这是abosolue_import规则。在

试试看

from .BouncyBallENV import BouncyBallEnv

在相对位置访问模块。在

此外,在bbsource目录下应该有一个__init__.py文件

你需要的是别名:

import bbsource.BouncyBallEnv as bbe
#Extra
print(bbe.WIDTH)

而且不能使用from ... import ...语法导入模块。只有属性。它是这样工作的:

^{pr2}$

有了第二个,你可以做到:

from bbsource.BouncyBallEnv import WIDTH
# the variable WIDTH is directly loaded : watch out for collision !

print(WIDTH)

相关问题 更多 >

    热门问题