在Python3.x脚本中执行一个文件,并保持变量可调用

在Python3.x脚本中执行一个文件,并保持变量可调用,python,user-interface,pyqt,qt-designer,Python,User Interface,Pyqt,Qt Designer,我没有找到在另一个python.py文件中定义/调用变量的方法 在使用“exec”之后 这是我使用pyqt所做的事情: 我想执行一段更大的代码 所以我使用“exec”是为了将我的“gui程序”与我的“计算程序”分开 当我选中gui中的复选框后运行此操作时。代码做了它应该做的事情,但是在“calculation_where_x_used.py”中定义的所有类型的矩阵和变量都不再可以通过shell调用了 我怎样才能解决这个问题?PS:我使用Spyder as和Python 3.3嗯。。。艾克 不要(

我没有找到在另一个python.py文件中定义/调用变量的方法 在使用“exec”之后

这是我使用pyqt所做的事情: 我想执行一段更大的代码 所以我使用“exec”是为了将我的“gui程序”与我的“计算程序”分开

当我选中gui中的复选框后运行此操作时。代码做了它应该做的事情,但是在“calculation_where_x_used.py”中定义的所有类型的矩阵和变量都不再可以通过shell调用了

我怎样才能解决这个问题?PS:我使用Spyder as和Python 3.3

嗯。。。艾克


不要(ab)为此使用eval;将计算代码转换为模块,导入并调用它。是否返回结果值-问题已解决。

是否尝试将globals()传递给exec?是否熟悉
import
语句?这是在单独的文件中使用代码的更惯用方法。如何传递globals()?@user2956831:显式!全局变量通常是一个坏主意。如何从exec()传递所有变量?这非常奇怪,即使我创建了一个与numpy模块一起使用的全局矩阵,我也无法在运行函数后从shell调用它。py import funcTry
from calculation\u其中使用了import func
(no.py),停止使用globals,在最坏的情况下,在使用.myglobalvar的地方尝试
calculation\u。
...gui. stuff...

if self.checkbox.checkState(): #"checkbox" = label of a checkboy in QTDesigner
        x=14

    exec(open("./calculation_where_x_used.py").read()) 

def onClose(self): # this is a button on my gui. labelled "Close"
    print("bye")
    self.close()