Скрипт python для запуска приложения узла и вывода зависимостей

Я пытаюсь написать скрипт Python, который будет загружать репозиторий Node GitHub. после загрузки он будет использовать команду сборки для сборки приложения, а затем также для вывода зависимостей этого проекта узла.

import json
import pymongo
import requests
import os
import subprocess
from git import Repo

from pymongo import MongoClient
client = MongoClient('mongodb://localhost:27017')
db = client['ibm_test']
collection_dep = db['dep']


headers = {'Authorization': 'token '}
r = requests.get('https://github.com/app.git', headers=headers)
#if (r.ok):
#    repoItem = package.json.loads(r.text or r.content)
#if  repoItem['language'] == 'JavaScript':

HTTPS_REMOTE_URL = 'https//git.url'
DEST_NAME = 'build/npm'
cloned_repo = Repo.clone_from(HTTPS_REMOTE_URL, DEST_NAME)
buildCommand = "build/npm/express-ibm/npm run-script devstart -b build/npm/express-ibm/package.json"
process = subprocess.Popen(buildCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
print(output)
print(error)
    # depo = subprocess.run(cmd)
     #depo = subprocess.check_output(['ls','-l'])
     #depo = os.system("gradle dependencies")
    # depo = os.system('path gradle *./graldew dependencies*')
    # collection_dep.insert(depo)
f= open("npm.json","w+")
#print(depo)
print("end")
client.close()

Обновлено: добавить обратную трассировку исключений.

Исходное исключение:

Traceback (most recent call last):
File "node.py", line 34, in <module>
    process = subprocess.Popen(buildCommand.split(), stdout=subprocess.PIPE)
File "/usr/lib/python3.6/subprocess.py", line 709, in init
    restore_signals, start_new_session)
File "/usr/lib/python3.6/subprocess.py", line 1344, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'build/npm/express-ibm/npm'

любые идеи или документация, которые помогут, были бы замечательны, спасибо

Howie Lynch 23.01.2019 21:59

Что происходит, когда вы запускаете этот код? вы получаете ошибки? пожалуйста, предоставьте более подробную информацию о том, что не работает, чтобы другие могли вам помочь, на данный момент неясно, в чем ваша проблема.

Shaun Peterson 23.01.2019 22:06

Исходным исключением было: Traceback (последний последний вызов): файл "node.py", строка 34, в <module> process = subprocess.Popen(buildCommand.split(), stdout=subprocess.PIPE) File "/usr/lib /python3.6/subprocess.py", строка 709, в в этом restore_signals, start_new_session) Файл "/usr/lib/python3.6/subprocess.py", строка 1344, в _execute_child поднять дочерний_исключение_тип (errno_num, err_msg, err_filename) FileNotFoundError : [Errno 2] Нет такого файла или каталога: 'build/npm/express-ibm/npm': 'build/npm/express-ibm/npm'

Howie Lynch 23.01.2019 22:19

Это ошибка, которую я получаю. Это связано с командой сборки. Репозиторий загружается в build/npm, как если бы я перешел в то место, где я могу запустить его из этого места.

Howie Lynch 23.01.2019 22:21
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
399
1

Ответы 1

Путь 'build/npm/express-ibm/npm' не существует.

Вам нужно указать полный путь

exe_path = os.path.join('/the/path/to', 'build/npm/express-ibm/npm')

И используйте его в subprocess.Popen (или subprocess.run, что лучше)

Другие вопросы по теме