2013-03-13 1 views
2

ОК, перед выпуском 1.4 у нас был пастер, где мы могли добавлять свои собственные команды, например, для кеша drop или загружать исходные данные базы данных. Прямо сейчас, как я понимаю, пирамида имеет дело с консольными скриптами, но документация оставляет желать лучшего в этой новой функции. Я хочу загрузить исходные данные базы данных. В старом стиле я пишу отдельную команду для пластификатора и зарегистрировать его, когда я буду загружать данные, как это:Как создать свои собственные команды в Pyramid 1.4

paster loaddbdata 

Как я могу сделать это сейчас?

+0

Когда вы регистрируете скрипт, он создает исполняемый файл в/bin вашего virtualenv. Вы можете прочитать документы здесь http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/commandline.html#making-your-script-into-a-console-script, а также посмотреть пример учебника здесь http://docs.pylonsproject.org/projects/pyramid/en/latest/tutorials/wiki2/definingmodels.html#changing-scripts-initializedb-py –

+0

@AntoineLeclair. Спасибо за вашу помощь. Но этот наставник о pshell (обертка вокруг интерпретатора python). И я делаю это с pshell, и поэтому выглядит, как вы запускаете оболочку, и у вас есть собственная команда в контексте оболочки. Он работает нормально, но я смущен, это не правильный способ загрузки исходных данных, я думаю. Могу ли я сделать это через setup.py? – Denis

ответ

2

Pyramid предоставляет pyramid.paster.bootstrap(), чтобы упростить создание сценария с вашим приложением. Превращение скрипта в команду не выполняется через сложную конструкцию, предоставленную Pyramid, но вы должны просто использовать точки ввода setuptools. Это включает в себя добавление раздела [console_scripts] в ваш setup.pyentry_points, повторный запуск разработки, и ваш скрипт должен быть установлен в каталог bin.

setup(
    # ... 
    entry_points={ 
    'paste.app_factory': [ 
     'main = myapp:main', 
    ], 
    'console_scripts': [ 
     'myscript = myapp.scripts.myscript:main', 
    ], 
)