#crash #plone
#сбой #plone
Вопрос:
Я использовал команду «paster», которая находится в каталоге «bin /» папки экземпляра моего Plone, чтобы создать приложение plone (из шаблона) с именем «MyApp» — команда была:
(from instance's root folder):> ./bin/paster create -t plone_app
Когда меня спросили имя, я дал ему «MyApp». Я скопировал это в папку «src /» и зарегистрировал его в файле «buildout.cfg» и запустил buildout. У меня этот процесс работает для других приложений с другими именами, однако кажется, что это конкретное приложение всегда завершает работу с Plone. Когда я захожу на свой сайт, все, что я получаю, это Zope (и не могу получить доступ к Plone). Есть ли причина, почему? Является ли «MyApp» зарезервированным пространством имен для чего-то другого, что вызывает сбой?
Я должен также отметить, что имя «myapp» работает просто отлично…
Комментарии:
1. Как происходит сбой? Если вы видите Zope, ничего не произошло сбоя. Вы получаете какие-либо ошибки?
Ответ №1:
Когда я пробую эту команду, она запускается следующим образом:
$ paster create -t plone_app
Selected and implied templates:
ZopeSkel#nested_namespace A basic Python project with a nested namespace (2 dots in name)
ZopeSkel#plone_app A project for Plone products with a nested namespace (2 dots in name)
Это означает, что вместо MyApp вы должны выбрать имя с двумя точками, например plone.app.mine. Когда вы просто указываете MyApp в качестве имени проекта, это, по-видимому, создает пакет MyApp.plone.MyApp.
Да, было бы лучше, если бы paster (zopeskel) выдавал здесь ошибку.
На самом деле, когда я заполняю здесь MyApp и использую его на сайте Plone 4, оно действительно запускается. Поэтому это может помочь вставить точную обратную трассировку, которую вы получаете. Но, вероятно, лучше всего выбрать название получше.
Сам Plone использует вложенные пространства имен для некоторых пакетов (например, plone.app.locales). Для ваших собственных проектов я бы сказал, что это перебор. Вместо этого попробуйте использовать ‘paster create -t plone’, который ожидает имя, подобное my.app или clientname.theme.
Ответ №2:
Стоит отметить (особенно в отношении ответа Maurits), что если вы используете скрипт ‘zopeskel’ вместо paster, например:
bin/zopeskel plone_app MyApp
Вы получите сообщение об ошибке, в котором говорится, что вам нужно имя с двумя точками. Это одна из основных причин использования скрипта ‘zopeskel’ вместо команды paster. При установке zopeskel у вас должен быть bin / zopeskel рядом с bin / paster. Используйте его, и вы получите улучшенные сообщения об ошибках и встроенную справку.
Ответ №3:
Работает для меня:
aclark@Alex-Clarks-MacBook-Pro:~/Developer/test-4.1/src/ > paster create -t plone_app MyApp
Selected and implied templates:
ZopeSkel#nested_namespace A basic Python project with a nested namespace (2 dots in name)
ZopeSkel#plone_app A project for Plone products with a nested namespace (2 dots in name)
Variables:
egg: MyApp
package: myapp
project: MyApp
Expert Mode? (What question mode would you like? (easy/expert/all)?) ['easy']:
Version (Version number for project) ['1.0']:
Description (One-line description of the project) ['']:
Creating template nested_namespace
Creating directory ./MyApp
Recursing into namespace_package
Creating ./MyApp/MyApp/
Recursing into namespace_package2
Creating ./MyApp/MyApp/plone/
Recursing into package
Creating ./MyApp/MyApp/plone/MyApp/
Copying __init__.py_tmpl to ./MyApp/MyApp/plone/MyApp/__init__.py
Copying __init__.py_tmpl to ./MyApp/MyApp/plone/__init__.py
Copying __init__.py_tmpl to ./MyApp/MyApp/__init__.py
Copying README.txt_tmpl to ./MyApp/README.txt
Recursing into docs
Creating ./MyApp/docs/
Copying HISTORY.txt_tmpl to ./MyApp/docs/HISTORY.txt
Copying setup.py_tmpl to ./MyApp/setup.py
Creating template plone_app
Recursing into namespace_package
Recursing into namespace_package2
Recursing into package
Replace 0 bytes with 86 bytes (0/0 lines changed; 3 lines added)
Copying __init__.py_tmpl to ./MyApp/MyApp/plone/MyApp/__init__.py
Copying configure.zcml_tmpl to ./MyApp/MyApp/plone/MyApp/configure.zcml
Copying tests.py_tmpl to ./MyApp/MyApp/plone/MyApp/tests.py
Copying version.txt_tmpl to ./MyApp/MyApp/plone/MyApp/version.txt
Recursing into docs
Copying INSTALL.txt_tmpl to ./MyApp/docs/INSTALL.txt
Copying LICENSE.GPL to ./MyApp/docs/LICENSE.GPL
Copying LICENSE.txt_tmpl to ./MyApp/docs/LICENSE.txt
Replace 890 bytes with 973 bytes (0/32 lines changed; 4 lines added)
Copying setup.py_tmpl to ./MyApp/setup.py
При сборке:
aclark@Alex-Clarks-MacBook-Pro:~/Developer/test-4.1/ > cat buildout.cfg
[buildout]
extends = http://dist.aclark.net/build/plone/4.1.x/develop.cfg
develop = src/MyApp
[plone]
eggs =
MyApp
Очевидно, что это не тот результат, которого вы ожидаете, хотя пастер создал пакет с тройным вложенным пространством имен под названием «MyApp.plone.MyApp» 🙂
Дополнительное примечание: это приложение не будет отображаться в надстройках в Plone, если вы не добавите профиль GenericSetup в MyApp / plone / MyApp /configure.zcml следующим образом:
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:five="http://namespaces.zope.org/five"
xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
i18n_domain="MyApp.plone.MyApp">
<five:registerPackage package="." initialize=".initialize" />
<genericsetup:registerProfile
name="default"
title="MyApp"
directory="profiles/default"
description="MyApp"
provides="Products.GenericSetup.interfaces.EXTENSION"
/>
</configure>
Тогда вы должны увидеть:
Наконец, нет ничего «неправильного» в пакетах, отличных от пространства имен, они просто условны (с плюсами / минусами по сравнению с пакетами с плоским пространством имен, и наоборот). Смотрите:
для примера «плоского» пакета Plone с пространством имен.