从集成Python解释器调用外部脚本
我正在努力使用一个简单的Python脚本,我想从另一个用Python编写的程序中调用它。由于我对Python非常陌生,我不知道如何解决这个问题 我使用的是在集成解释器中运行的。Artisan允许我定义触发操作的按钮,例如调用外部脚本。 在我的例子中,这个外部脚本应该通过串行端口与Arduino通信。我的外部脚本最初是用Python3编写的,但出于测试目的,我还将代码更改为Python2。 这就是它看起来的样子:从集成Python解释器调用外部脚本,python,external,interpreter,laravel-artisan,Python,External,Interpreter,Laravel Artisan,我正在努力使用一个简单的Python脚本,我想从另一个用Python编写的程序中调用它。由于我对Python非常陌生,我不知道如何解决这个问题 我使用的是在集成解释器中运行的。Artisan允许我定义触发操作的按钮,例如调用外部脚本。 在我的例子中,这个外部脚本应该通过串行端口与Arduino通信。我的外部脚本最初是用Python3编写的,但出于测试目的,我还将代码更改为Python2。 这就是它看起来的样子: #!/usr/bin/env python3 import sys import t
#!/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:
用户警告:Matplotlib正在使用fc列表生成字体缓存。这
可能需要一点时间。7月13日07:22:57工匠[40170]:致命
Python错误:Py_初始化:无法加载文件系统编解码器Jul
13 07:22:57 Artisan[40170]:输入错误:未命名模块
“编码”7月13日07:22:57工匠[40170]:7月13日07:22:57
Artisan[40170]:当前螺纹0x00007fff73660000(大多数
最近通话(优先):
接下来,我尝试从Artisan内部调用另一个短脚本来调用上述脚本:
from subprocess import call
call(['./arduino.py', sys.argv[1]])
导致相同的错误:/
将代码更改为Python2时,通知会更改,但脚本也不会执行:
7月13日18:56:15 Artisan[40956]:回溯(最近的电话)
最后):7月13日18:56:15工匠[40956]:文件
“/Users/philipp/arduino.py”,第5行,7月13日18:56:15
Artisan[40956]:导入序列Jul 13 18:56:15
Artisan[40956]:文件“serial/init.pyo”,第13行,在
Jul 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工匠[40956]:
dlopen(/Applications/Artisan.app/Contents/Resources/lib/python2.7/lib-dynload//u io.so,
2) :未找到符号:\ uuuPyCodecInfo\uGetIncrementalDecoder 7月13日
18:56:15 Artisan[40956]:引用自:
/Applications/Artisan.app/Contents/Resources/lib/python2.7/lib-dynload//u io.so
7月13日18:56:15工匠[40956]:预计在:公寓
命名空间Jul 13 18:56:15 Artisan[40956]:在
/Applications/Artisan.app/Contents/Resources/lib/python2.7/lib-dynload//u io.so
我尝试了hash-rpython,但这没有改变任何事情
为了让我的脚本由外部Python(最好是Python 3)解释器解释,而不是使用Artisan集成的解释器,我必须做什么
所有脚本都是可执行的,必要的lib都安装到了MacOS附带的Python3和Python2中
非常感谢你的帮助
菲利普