setup.py如何安装npm模块?

时间:2017-03-12 02:20:06

标签: python npm setup.py

我实现了一个我想测试的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";
    }

2 个答案:

答案 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)