导入课程& Python 2.7中的变量

时间:2015-08-11 04:21:16

标签: python file class python-2.7 python-import

您好我无法将类和变量导入其他python文件的python文件中。功能正常。

作为测试,我使用函数,类,指定的类实例和随机变量设置file1。然后我在file2中使用了各种方法:

1。 import file1

2。 来自file1 import * 错误:'名称未定义'

3。 来自file1导入变量,类,实例等 错误:无法导入名称类

4+。然后做一些其他事情...... 创建 init .py文件

或尝试设置目录:

导入操作系统 os.chdir( “/用户/ mardersteina /文档”)

不确定我做错了什么。函数导入很好,但无论我在查找什么,都无法用类和变量计算出来。

Untitled7:<​​/ p>

def happy():
    print "yo!"

class Tap(object):
    def __init__(self,level):
        self.level = level

level4 = Tap(4)

x = 14

Untitled9:

    %run "/Users/mardersteina/Documents/Untitled9.py"
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/Users/mardersteina/Documents/Untitled9.py in <module>()
      1 import Untitled7
      2 
----> 3 print Untitled7.x
      4 """
      5 from Untitled7 import Tap

AttributeError: 'module' object has no attribute 'x' 



%run "/Users/mardersteina/Documents/Untitled9.py"
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
/Users/mardersteina/Documents/Untitled9.py in <module>()
      4 print Untitled7.x
      5 """
----> 6 from Untitled7 import Tap
      7 
      8 print Tap(4).level

ImportError: cannot import name Tap 

%run "/Users/mardersteina/Documents/Untitled9.py"
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
/Users/mardersteina/Documents/Untitled9.py in <module>()
     11 from Untitled7 import *
     12 
---> 13 print level4.level

NameError: name 'level4' is not defined 

1 个答案:

答案 0 :(得分:3)

我可以看到您正在从打开的控制台运行该文件。

最有可能的问题是,您之前只有一个函数导入了Untitled7.py。当你这样做时,Python会在sys.modules中缓存该模块。

因此,如果您尝试再次在同一会话中导入它,您将从sys.modules获取缓存版本,这就是导入它之后对Untitled7所做的任何更改的原因不可见。

要解决此问题,您可以reload模块 -

在Python 3.x中,使用importlib.reload()重新加载模块(以接受新的更改),示例 -

import importlib
importlib.reload(Untitled7)

在Python 2.x中,使用reload()方法 -

reload(Untitled7)

或者您也可以关闭python终端并重新打开它,它应该解决问题。