你好堆栈溢出用户,
我很难让 mypy 与 Popen 一起正常工作。本质上,我正在编写一个使用 mypy 但似乎无法在我的构建机器上获得有效输出的测试套件。
有问题的行如下:
p = subprocess.Popen(['mypy'] + extra_args + python_files, env=my_env, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIP)
extra_args
指定缓存目录和回溯,并且python_files
是要测试的有问题的文件。我相当有信心这些论点都不是问题,因为我已经玩过这些并且没有取得任何进展。
该文件位于 git repo 中,我已将其克隆并放在构建盒中。在本地这不是问题——我得到有效的 mypy 输出指示错误。但是,在我的构建机器上,我得到了OSError: [Errno 2] No such file or directory
错误。完整的错误信息如下:
Traceback (most recent call last):
File "mypath/run_mypy.py", line 83, in <module>
main()
File "mypath/run_mypy.py", line 70, in main
p = subprocess.Popen(['mypy'] + extra_args + python_files, env=my_env, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
myotherpath/build-stack.mk:162: recipe for target 'mypy' failed
我已经尝试添加shell=True
,但这导致所有 mypy 错误开始被抑制,并且被认为是错误的样式/安全问题。
我的猜测/想法是 mypy 可能不在 popen 在没有外壳的情况下使用的路径中,但我真的不确定。