setup.py 如何安装 npm 模块?
How setup.py install npm module?
我实现了一个 python Web 客户端,我想测试一下。
服务器托管在 npm 注册表中。在 运行 我的功能测试之前,服务器通过节点在本地获取 运行。
如何从我的 setup.py 脚本正确安装 npm 模块?
这是我当前的解决方案,灵感来自于此 :
class CustomInstallCommand(install):
def run(self):
arguments = [
'npm',
'install',
'--prefix',
'test/functional',
'promisify'
]
subprocess.call(arguments, shell=True)
install.run(self)
setup(
cmdclass={'install': CustomInstallCommand},
你非常接近,这是一个简单的功能,你可以删除“--global”选项是你只想为当前项目安装包,记住命令shell=True 可能存在安全风险
import subprocess
def npm_install(args=["npm","--global", "install", "search-index"])
subprocess.Popen(args, shell=True)
from setuptools.command.build_py import build_py
class NPMInstall(build_py):
def run(self):
self.run_command('npm install --prefix test/functional promisify')
build_py.run(self)
或
from distutils.command.build import build
class NPMInstall(build):
def run(self):
self.run_command("npm install --prefix test/functional promisify")
build.run(self)
终于:
setuptools.setup(
cmdclass={
'npm_install': NPMInstall
},
# Usual setup() args.
# ...
)
也看看here
我实现了一个 python Web 客户端,我想测试一下。
服务器托管在 npm 注册表中。在 运行 我的功能测试之前,服务器通过节点在本地获取 运行。
如何从我的 setup.py 脚本正确安装 npm 模块?
这是我当前的解决方案,灵感来自于此
class CustomInstallCommand(install):
def run(self):
arguments = [
'npm',
'install',
'--prefix',
'test/functional',
'promisify'
]
subprocess.call(arguments, shell=True)
install.run(self)
setup(
cmdclass={'install': CustomInstallCommand},
你非常接近,这是一个简单的功能,你可以删除“--global”选项是你只想为当前项目安装包,记住命令shell=True 可能存在安全风险
import subprocess
def npm_install(args=["npm","--global", "install", "search-index"])
subprocess.Popen(args, shell=True)
from setuptools.command.build_py import build_py
class NPMInstall(build_py):
def run(self):
self.run_command('npm install --prefix test/functional promisify')
build_py.run(self)
或
from distutils.command.build import build
class NPMInstall(build):
def run(self):
self.run_command("npm install --prefix test/functional promisify")
build.run(self)
终于:
setuptools.setup(
cmdclass={
'npm_install': NPMInstall
},
# Usual setup() args.
# ...
)
也看看here