从 setup.py 运行时命令"npm run build"无效



我试图通过setup.py配置文件使用npm run build构建我的应用程序的Javascript端。我使用build类从distutils建议在其他地方,但我得到一个错误,当我运行pip install .

from setuptools import setup
from distutils.command.build import build
import json
import os
class javascript_build(build):
def run(self):
self.run_command("npm run build")
build.run(self)
if __name__ == "__main__":
setup(
cmdclass={'build': javascript_build},
)

有人知道为什么会这样吗?

running npm run build
error: invalid command 'npm run build'
----------------------------------------
ERROR: Failed building wheel for chemiscope

编辑1:所以它似乎不是运行npm run build,而是运行python setup.py npm run build。所以我的问题改变了一点,我如何确切地强迫distutils运行npm run build?

self.run_command("xxx")不运行程序-它调用另一个distutils/setuptools子命令;类似于调用python setup.py xxx,但从相同的进程,而不是通过命令行。所以你可以做self.run_command("sdist"),但不能做self.run_command("npm")

在你的情况下你需要os.system("npm run build")subprocess.call("npm run build")

我已经设法通过使用subprocess.check_output()得到这个工作,如下所示。我不确定这是否理想,但它确实有效。

from setuptools import setup
from distutils.command.build import build
from distutils import log
import subprocess
import json
import os
class javascript_build(build):
def run(self):
log.info("running npm run build")
subprocess.check_output(['npm', 'run', 'build'], shell=True)
build.run(self)

if __name__ == "__main__":
setup(
cmdclass={
'build': javascript_build,
},
)

相关内容

  • 没有找到相关文章

最新更新