无效命令 'npm run build' 当 运行 来自 setup.py
invalid command 'npm run build' when running it from setup.py
我正在尝试通过 setup.py
配置文件使用 npm run build
构建我的应用程序的 Javascript 端。我正在按照其他地方的建议使用 distutils
中的 build
class,但是当我 运行 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:所以看起来 运行ning npm run build
不是 运行ning python setup.py npm run build
。所以我的问题有点改变,我如何准确地将 distutils
强制为 运行 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,
},
)
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")
。
我正在尝试通过 setup.py
配置文件使用 npm run build
构建我的应用程序的 Javascript 端。我正在按照其他地方的建议使用 distutils
中的 build
class,但是当我 运行 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:所以看起来 运行ning npm run build
不是 运行ning python setup.py npm run build
。所以我的问题有点改变,我如何准确地将 distutils
强制为 运行 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,
},
)
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")
。