`pip: error: нет команды с именем pip install -r needs.txt` после запуска - PullRequest
1 голос
/ 03 декабря 2011

Я пытаюсь создать сценарий boostrap.py, который создаст virtualenv и установит требования из файла require.txt.Другие участники моего проекта должны иметь возможность извлечь проект из github и запустить python bootstrap.py, а затем source env/bin/activate, чтобы получить рабочую установку моего приложения.Ниже приведен сценарий, который я написал, используя эту страницу в качестве руководства: http://pypi.python.org/pypi/virtualenv

import virtualenv, textwrap
output = virtualenv.create_bootstrap_script(textwrap.dedent("""
def after_install(options, home_dir):
    if sys.platform == 'win32':
        bin = 'Scripts'
    else:
        bin = 'bin'

    subprocess.call([join(home_dir,bin,'pip'),'install -r requirements.txt'])

"""))
print output

Ниже приведены команды, которые я выполняю для создания загрузчика и его запуска:

python create_bootstrap.py > bootstrap.py
python bootstrap.py env

Ниже приведен вывод:

New python executable in env/bin/python
Installing setuptools............done.
Installing pip...............done.
Usage: pip COMMAND [OPTIONS]

pip: error: No command by the name pip install -r requirements.txt
  (maybe you meant "pip install install -r requirements.txt")

needs.txt выглядит так:

sqlalchemy==0.7

Любые предложения по другой практике или советы о том, что я делаю неправильно,быть полезным.Большое спасибо!

1 Ответ

3 голосов
/ 04 декабря 2011

В

subprocess.call([join(home_dir,bin,'pip'),'install -r requirements.txt'])

'install -r requirements.txt' рассматривается как один аргумент, содержащий пробелы, поэтому модуль подпроцесса интерпретирует это как вызов pip 'install -r requirements.txt'.

Вы можете исправитьэто путем указания каждого аргумента отдельно:

subprocess.call([join(home_dir,bin,'pip'), 'install', '-r', 'requirements.txt'])
...