Python 2.7将方法从一个脚本传递到另一个脚本

Python 2.7将方法从一个脚本传递到另一个脚本,python,pickle,Python,Pickle,我对Pyton的世界真的很陌生。我实际上在做音乐,我使用一个叫Ableton的软件。 我正在为这个软件编写两个脚本。 事实上,它们在Ableton GUI中是可选择的。每个脚本都链接到一个硬件接口。这些脚本允许我自定义硬件接口控制软件的方式(Ableton)。 我的2个脚本正常工作,但我希望能够将命令从一个脚本发送到另一个脚本(以便在按下第二个控制器的按钮时在第一个控制器上执行操作)。 所以我有两个单独的文件夹和两个脚本(我不能同时使用一个文件夹,因为Ableton必须独立运行和编译这两个脚本)

我对Pyton的世界真的很陌生。我实际上在做音乐,我使用一个叫Ableton的软件。
我正在为这个软件编写两个脚本。
事实上,它们在Ableton GUI中是可选择的。每个脚本都链接到一个硬件接口。这些脚本允许我自定义硬件接口控制软件的方式(Ableton)。 我的2个脚本正常工作,但我希望能够将命令从一个脚本发送到另一个脚本(以便在按下第二个控制器的按钮时在第一个控制器上执行操作)。
所以我有两个单独的文件夹和两个脚本(我不能同时使用一个文件夹,因为Ableton必须独立运行和编译这两个脚本)。 因此,让我们将它们称为文件夹A文件夹B
在这两个文件夹中,我都有一个\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuupy和一个main\u code.py文件
main_code.py文件如下所示:

from\uuuuuu future\uuuuuuu使用\u语句导入
从\u Framework.ControlSurface导入ControlSurface
现场导入
导入时间
类主代码(控制面):
定义初始化(self,c_实例):
ControlSurface.\uuuu init\uuuuu(self,c\u实例)
使用self.component_guard():
self.\u suppress\u send\u midi=True
self.clip=self.selected\u scene.clip\u slot[self.selected\u track\u idx].clip
self.\u suppress\u send\u midi=False
@财产
def所选_轨迹(自身):
返回self.song().view.selected\u曲目
@财产
def所选_轨迹_idx(自身):
返回self.tuple_idx(self.song().tracks,self.song().view.selected_track)
@财产
定义所选场景(自身):
返回self.song().view.selected\u场景
def tuple_idx(self、tuple、obj):
对于x范围内的i(0,len(tuple)):
如果(元组[i]==obj):
返回i
返回(假)
正如您所见,我使用了一些框架(ControlSurface)和ableton API(import Live)。 我要做的是将变量self.clip从一个脚本“发送”到另一个脚本,以便它们都具有相同的“值” 对不起,我的报价,但我现在不再,如果它是一种方法或任何曾经。。。 我的第一个想法是使用pickle在一个文件中哑self.clip并在另一个文件中加载它,但当我这样做时,我在ableton报告崩溃中得到了错误:

文件“/Users/versonator/Jenkins/live/Projects/AppWebConnector/Resources/third_party/lib/pickle.py”,第1362行,在转储文件中

9250 ms.RemoteScriptError:文件“/Users/versonator/Jenkins/live/Projects/AppWebConnector/Resources/third_party/lib/pickle.py”,第224行,在转储中

9250 ms.RemoteScriptError:File“/Users/versonator/Jenkins/live/Projects/AppWebConnector/Resources/third_party/lib/pickle.py”,第306行,保存

9251毫秒RemoteScriptError:运行时错误 9251毫秒RemoteScriptError:: 9251 ms.RemoteScriptError:未启用“Clip.Clip”实例的酸洗() 9251毫秒RemoteScriptError:

其实我用的泡菜是这样的:

clip=self.clip
f=打开('/Users/Louis/Desktop/test.pickle',wb')
泡菜倾倒(夹子,f,-1)
f、 关闭()

即使我根本不是一个程序员,这看起来真是一团糟。我希望有人能帮助我找到另一种方法来做我想做的事情,或者解决我的难题

假设您使用Ableton调用脚本B.py,它需要脚本A.py中的self.clip 在需要self.clip write的脚本B.py的顶部:

import sys
sys.path.append('\path\to\script\A\')
# You should now be able to import every class from script A 
# and use its methods and functions. 
e、 g:

B.py

。。。等等

也许您需要在脚本a所在的目录中创建一个名为_init__u; py.py的文件,以便使该文件夹成为可由其他脚本导入的python包

如果需要A.py的self.clip,可以执行以下操作:

mc = main_code(c_instance)
clip = mc.clip
或者,您可以在a.py中创建一个返回self.clip的函数:

A.py

注: 您需要检查self.clip是否在A.py中更改,如果更改,则在B.py中更新clip


希望这有帮助

让我们假设您使用Ableton调用脚本B.py,它需要脚本A.py中的self.clip 在需要self.clip write的脚本B.py的顶部:

import sys
sys.path.append('\path\to\script\A\')
# You should now be able to import every class from script A 
# and use its methods and functions. 
e、 g:

B.py

。。。等等

也许您需要在脚本a所在的目录中创建一个名为_init__u; py.py的文件,以便使该文件夹成为可由其他脚本导入的python包

如果需要A.py的self.clip,可以执行以下操作:

mc = main_code(c_instance)
clip = mc.clip
或者,您可以在a.py中创建一个返回self.clip的函数:

A.py

注: 您需要检查self.clip是否在A.py中更改,如果更改,则在B.py中更新clip


希望这有帮助

您可以尝试使用import sys将初始化self.clip的脚本添加到sys路径;append('/path/to/script/');在需要self.clip的脚本中。然后你应该能够导入初始化self.clip的脚本并在另一个脚本中使用它。如果你有时间,你能给我一个非常简短的例子吗?谢谢你的回答!self.clip根据我在硬件界面上按下的按钮进行更改。您确定,第二个脚本将获得所有这些更改吗?我不知道怎么做。再次感谢您的帮助。您可以尝试使用import sys将初始化self.clip的脚本添加到sys路径;append('/path/to/script/');在需要self.clip的脚本中。然后你应该能够导入初始化self.clip的脚本并在另一个脚本中使用它。如果你有时间,你能给我一个非常简短的例子吗?谢谢你的回答!self.clip根据我在硬件界面上按下的按钮进行更改。您确定,第二个脚本将获得所有这些更改吗?我不知道怎么做。再次感谢你的帮助。谢谢你的回答。我现在就试试这个!你知道mac OSX中应用程序的全局路径是什么吗?不,对不起。我对麦克不太熟悉。