我实现了一个我想测试的python Web客户端。
服务器托管在npm注册表中。在运行我的功能测试之前,服务器在本地运行节点。
如何从setup.py脚本中正确安装npm模块?
以下是我目前的解决方案,受益于此post:
my @array1 = (1, 2, 3,3,3,3,4);
my @array2 = (2, 3, 4,4,4);
print intersect( \@array1, \@array2);
@array1 = (5,6,7,7,7,1,4);
@array2 = (5,6,7,6,7,7,4,4,4);
print intersect( \@array1, \@array2);
sub intersect {
my ($first, $second) = @_;
my @array1 = @{ $first };
my @array2 = @{ $second };
my %original = ();
my @isect = ();
map { $original{$_} = 1 } @array1;
@isect = grep { exists $original{$_} and $original{$_}++ < 2 } @array2;
return "@isect\n";
}
答案 0 :(得分:6)
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)
OR
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
答案 1 :(得分:2)
你非常接近,这是一个简单的功能,你可以删除&#34; - global&#34;选项是您只想为当前项目安装软件包,请记住命令shell = True可能存在安全风险
import subprocess
def npm_install(args=["npm","--global", "install", "search-index"])
subprocess.Popen(args, shell=True)