Форум сайта python.su
Всем доброго времени суток.
Жизнь заставила обратиться к Питону.
Суть: есть проект на Питоне. Сборка инсталлятора запускается питоновским сценарием:
>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 дня с Питоном
Офлайн
import sys
print(len(sys.argv), sys.argv)
Офлайн
Спасибо.
Это понятно.
Передавать, передавал и выводил:
———————
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):
Офлайн
Все уже украдено до нас: import optparse
Офлайн
PooH, слегка не то советуете. В distutils свой парсер, и прийдется работать с ним.
svs, в вашем примере уже есть install_icon и install_image. Сделайте по аналогии.
Офлайн
svs
Почему аргумент воспринимается как command?
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
E:\platform>setup.py cmd1 build_install param1
Отредактировано (Сен. 23, 2010 10:10:46)
Офлайн
Андрей СветловСпасибо всем. А всего то надо было …. ))))
Офлайн