2017-03-12 15 views
5

私はテストしたいpython Webクライアントを実装しました。setup.pyはnpmモジュールをどのようにインストールしますか?

サーバーはnpmレジストリでホストされています。サーバーは、機能テストを実行する前にノードでローカルに実行されます。

私のsetup.pyスクリプトからnpmモジュールを正しくインストールするにはどうしたらいいですか?ここで

が私の現在のソリューションは、この postからインスピレーションを得ている:

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}, 

答えて

5
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

あなたはここだけでは、あなたが削除することができない単純な関数があり、非常に接近している「--global」オプションは、インストールしたいです現在のプロジェクトのためのパッケージは唯一、心の中でコマンドシェルを保つ=セキュリティを提示することができTrueが

import subprocess 
def npm_install(args=["npm","--global", "install", "search-index"]) 
    subprocess.Popen(args, shell=True) 
関連する問題