从集成的Python-Interpreter调用外部脚本

时间:2016-07-14 14:43:03

标签: python external interpreter artisan

我正在努力学习一个简单的Python脚本,我想从另一个用Python编写的程序中调用它。由于我对Python很陌生,我不知道如何解决这个问题。

我使用Artisan在一个集成的解释器中运行。 Artisan让我定义按钮来触发动作,例如调用外部脚本。 在我的例子中,这个外部脚本应该通过串口与Arduino通信。我的外部脚本最初是用Python3编写的,但出于测试目的,我还将代码更改为Python2。 这就是它的样子:

#!/usr/bin/env python3
import sys
import time
import serial

PORT = '/dev/tty.usbmodemFA131'

with serial.Serial(PORT, 9600) as arduino:
    time.sleep(2)
    arduino.write(sys.argv[1].encode('ASCII'))
    print(arduino.readline())

当我从终端运行此代码时(我使用的是MacOS 10.11.5),它的效果与预期的一样。

当我从Artisan中调用它时,Python崩溃,显示以下通知:

  

上次登录时间:7月13日星期三07:21:46 ttys000 Philipps-Air:~philipp $   /Applications/Artisan.app/Contents/MacOS/Artisan;出口; 7月13日   07:22:20工匠[40170]:   /Applications/Artisan.app/Contents/Resources/lib/python2.7/site-packages.zip/matplotlib/font_manager.py:273:   UserWarning:Matplotlib正在使用fc-list构建字体缓存。这个   可能需要一点时间。 7月13日07:22:57工匠[40170]:致命   Python错误:Py_Initialize:无法加载文件系统编解码器7月   13 07:22:57 Artisan [40170]:ImportError:没有命名的模块   '编码' Jul 13 07:22:57 Artisan [40170]:Jul 13 07:22:57   Artisan [40170]:当前线程0x00007fff73660000(大多数   最近的电话会议:)

接下来,我试图从Artisan中调用另一个简短的脚本来调用上面的脚本:

from subprocess import call
call(['./arduino.py', sys.argv[1]])

导致同样的错误:/

将代码更改为Python2时,通知会更改,但脚本不会执行:

  

Jul 13 18:56:15 Artisan [40956]:Traceback(最近的电话   最后):Jul 13 18:56:15 Artisan [40956]:档案   " /Users/philipp/arduino.py" ;,第5行,7月13日18:56:15   工匠[40956]:导入序列7月13日18:56:15   Artisan [40956]:文件"序列号/ init .pyo",第13行,in    7月13日18:56:15 Artisan [40956]:档案   " serial / serialutil.pyo",第10行,7月13日18:56:15   Artisan [40956]:文件" io.pyo",第51行,7月13日   18:56:15 Artisan [40956]:ImportError:   dlopen的(/Applications/Artisan.app/Contents/Resources/lib/python2.7/lib-dynload/_io.so,   2):找不到符号:__PyCodecInfo_GetIncrementalDecoder 7月13日   18:56:15 Artisan [40956]:引用自:   /Applications/Artisan.app/Contents/Resources/lib/python2.7/lib-dynload/_io.so   7月13日18:56:15工匠[40956]:期待:平坦   7月13日18:56:15 Artisan [40956]:in   /Applications/Artisan.app/Contents/Resources/lib/python2.7/lib-dynload/_io.so

我尝试了 hash -r python ,但这并没有改变一件事。

我需要做什么才能让我的EXTERNAL Python(特别是Python3)解释器解释我的脚本,而不是使用Artisan集成的解释器?

所有脚本都是可执行的,必要的库都安装在Mac3附带的Python3和Python2中。

非常感谢你的帮助!

菲利普

0 个答案:

没有答案