Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 23, 2010 05:36:08

svs
От:
Зарегистрирован: 2010-09-23
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Аргументы в командной строке

Всем доброго времени суток.

Жизнь заставила обратиться к Питону.

Суть: есть проект на Питоне. Сборка инсталлятора запускается питоновским сценарием:
>setup.py build_install

Содержание
=============


import os.path
import os
import shutil
import time
import socket
import copy
import sys
import string
import subprocess
import zipfile as zip

class build_install(Command):
description = “create installer using NSIS”

user_options = [
('generic', None, ‘Build a generic installer.’),
('install-icon=', None, ‘ICO file to use for the installer.’),
('install-image=', None, ‘BMP file to use for the welcome/finish pages.’)
]

def run(self):
self.run_command('bdist_product')
self.dist_dir = self.get_finalized_command('py2exe').dist_dir

log.info(“building installer”)

self.copy_file(os.path.join(platform_dir, ‘product.nsi’), self.dist_dir)
self.copy_file(self.install_icon, self.dist_dir)
self.copy_file(self.install_image, self.dist_dir)
self.copy_file(“ToolbarSetup.exe”, self.dist_dir)
self.copy_file(“Toolbar.bmp”, self.dist_dir)
…….
==============

self.copy_file(“ToolbarSetup.exe”, self.dist_dir)
self.copy_file(“Toolbar.bmp”, self.dist_dir)

вот эти аттрибуты являются переменными и хотелось бы их передавать как аргументы, что то типа:

>setup.py build_install ‘E:\Data\ToolbarSetup.exe’ ‘E:\Data\Toolbar.bmp’

Как это сделать?

Заранее спасибо.

PS. тока 2 дня с Питоном



Офлайн

#2 Сен. 23, 2010 07:54:08

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9960
Репутация: +  856  -
Профиль   Отправить e-mail  

Аргументы в командной строке

import sys

print(len(sys.argv), sys.argv)



Офлайн

#3 Сен. 23, 2010 08:27:05

svs
От:
Зарегистрирован: 2010-09-23
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Аргументы в командной строке

Спасибо.
Это понятно.

Передавать, передавал и выводил:
———————
for argument in sys.argv:
print argument

print “Number of arguments:”, str(len(sys.argv))

x=0
while x < len(sys.argv):
print "sys.argv =", sys.argv
x+=1
———————

но при этом выдает ошибку:
————————-
E:\platform>setup.py build_install param1
E:\platform\setup.py
build_install
param1
Number of arguments: 2
sys.argv = E:\platform\setup.py
sys.argv = build_install
sys.argv = param1
*** copying locale files ***
usage: setup.py cmd1 [cmd2 …]
or: setup.py –help
or: setup.py –help-commands
or: setup.py cmd –help

error: invalid command ‘param1’
————————-

Почему аргумент воспринимается как command?

Значение этого аргумента мне надо использовать в def run(self):



Офлайн

#4 Сен. 23, 2010 08:43:26

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Аргументы в командной строке

Все уже украдено до нас: import optparse



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Сен. 23, 2010 09:31:26

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Аргументы в командной строке

PooH, слегка не то советуете. В distutils свой парсер, и прийдется работать с ним.
svs, в вашем примере уже есть install_icon и install_image. Сделайте по аналогии.



Офлайн

#6 Сен. 23, 2010 10:06:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9960
Репутация: +  856  -
Профиль   Отправить e-mail  

Аргументы в командной строке

svs
Почему аргумент воспринимается как command?
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
ну вызови ради эксперимента
E:\platform>setup.py cmd1 build_install param1
если она скажет, что cmd1 - это не параметр (global_opts), значит build_install - параметр (global_opts)
тогда и param1 попадает на место команды (в том первом случае)



Отредактировано (Сен. 23, 2010 10:10:46)

Офлайн

#7 Сен. 23, 2010 10:09:23

svs
От:
Зарегистрирован: 2010-09-23
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Аргументы в командной строке

Андрей Светлов
Спасибо всем. А всего то надо было …. ))))



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version