Python Subprocess.check_输出对windows上的node.js不执行任何操作?

Python Subprocess.check_输出对windows上的node.js不执行任何操作?,python,node.js,windows,cmd,csso,Python,Node.js,Windows,Cmd,Csso,我的自动缩小工具有一个奇怪的问题。我不得不用csso替换yuicompressor,因为yuicompressor自2013年以来就没有更新过,而且更新的css选择器有很多bug 这增加了复杂性(如涉及的“东西”的数量),以至于我不知道如何在执行命令时调试问题。(或者即使它被处决了) 我基本上已经将问题缩小到以下python代码段(目前添加了许多调试语句来帮助诊断问题): 请注意,getScriptPath()是一个小的辅助函数,它返回脚本文件所在的当前路径csso通过手动复制css/csso/

我的自动缩小工具有一个奇怪的问题。我不得不用csso替换yuicompressor,因为yuicompressor自2013年以来就没有更新过,而且更新的css选择器有很多bug

这增加了复杂性(如涉及的“东西”的数量),以至于我不知道如何在执行命令时调试问题。(或者即使它被处决了)

我基本上已经将问题缩小到以下python代码段(目前添加了许多调试语句来帮助诊断问题):

请注意,
getScriptPath()
是一个小的辅助函数,它返回脚本文件所在的当前路径
csso
通过手动复制css/csso/bin/csso下的文件来安装
name
是一个字符串,它保存原始css文件的相对路径(通常类似于
。/../domains\mydomain.com\templates\css\style.css
),而
outname
始终与
name
相同,但扩展名更改为
.min.css

如果我直接在
cmd
终端中复制并粘贴第一次
print()
调用的结果,
csso
将运行并缩小我的文件。但是,如果我调用一个批处理脚本来运行最终运行上述代码的python程序(作为其工作的一部分),什么都不做,没有输出

subprocess.run
调用过去是一个简单的
shell
调用,它没有输出。然而,我仍然没有得到任何输出。下面是我通过手动运行它(在stderr中)获得的一些示例输出:

(python版本的当前输出显示为空。如果它包含任何数据,则所有字节在标准
cmd
工具中打印为空)

一个想法是:有没有办法让
subprocess.run
(或
shell
)回显它执行的确切命令,以及从哪个路径回显,这样我就可以手动复制它,至少可以排除构造命令时的任何错误或引号中的差异,等等?理想情况下,可能是一个二进制文件,因为这看起来像“两件东西看起来完全相同,但不是”fun

其他相关标签:
批量,缩小。

我已成功诊断出问题

在windows上,存在多个不同的路径变量。出现问题的机器在安装
node.js
后没有重新启动,路径可直接用于
cmd
,但不可用于
python
,后者仍然使用旧变量。因此它得到了一个错误;节点不存在

由于某种原因,我仍然不知道这个错误被原始代码消除了。但是,在两行之间添加这两行(由
>
指示)将导致程序打印两个命令的结果(而不是两个命令都打印):

print("node " + os.path.join(getScriptPath(), "css", "csso", "bin", "csso") 
    + " -i " + os.path.join(root, name) + " -o " + os.path.join(root, outname) + " --debug")
os.remove(os.path.join(root, outname))
try:
    result = subprocess.check_output(["node",
        os.path.join(getScriptPath(), "css", "csso", "bin", "csso"),  
        "-i", os.path.join(root, name),
        "-o", os.path.join(root, outname), 
        "--debug"
        ], stderr=subprocess.STDOUT, shell=True)    
except subprocess.CalledProcessError as exc:
    print("ERROR: Failed to execute CSSO with error:", exc.returncode, exc.output)
## parsing done in 16 ms

Compress block #1
[0.000s] init
[0.000s] clean
[0.015s] replace
[0.000s] prepare
[0.000s] mergeAtrule
[0.000s] initialMergeRuleset
[0.000s] disjoinRuleset
[0.016s] restructShorthand
[0.000s] restructBlock
[0.000s] mergeRuleset
[0.016s] restructRuleset
## compress done in 47 ms

## generate done in 0 ms
 >>> result2 = subprocess.check_output("echo \"Hello World\"", stderr=subprocess.STDOUT, shell=True)  
    except subprocess.CalledProcessError as exc:
        print("ERROR: Failed to execute CSSO with error:", exc.returncode, exc.output)
    print(result.decode())
    >>> print(result2.decode())