What makes “paster addcontent” fail for a package created with Zopeskel template “archetype”?
Question
Here is the situation:
- fresh Plone 4.2 buildout
- a fresh package created using Zopeskel 2.21.1 with template 'archetype' and configured in my buildout using mr.developer
Trying to add some content types inside my package fails with:
[ajung@dev1 nva.aktionsmittel]$ bin/paster addcontent
Command 'addcontent' not known (you may need to run setup.py egg_info)
Running setup.py egg_info did not help.
setup.py contains:
setup.py: paster_plugins=["ZopeSkel"]
setup.cfg contains:
[zopeskel]
template = archetype
What is the magic behind the local commands in order to make "paster addcontent" working? It worked in other contexts as it should?!
La solution
ZopeSkel 2 issues
You are following a bad tutorial. Please make sure that
You follow instructions specific here http://collective-docs.readthedocs.org/en/latest/getstarted/paste.html#adding-zopeskel-to-your-buildout - paster command must come from buildout
If you are not following the link above then please give the link to the page whose instructions you are follow and I can burn that page as it contains misleading instructions.
Make sure that paster you are using comes from buildout (from your command line it doesn't seem to be so).
Make sure your egg is registered in buildout correctly in
eggs =
sectionMake sure your setup.py contains necessary boilerplate http://collective-docs.readthedocs.org/en/latest/getstarted/paste.html#how-paster-local-commands-work (note: example is ZopeSkel 3+)
This is the way to make paster aware of your egg and its dependencies correctly and thus local commands can work.
ZopeSkel 3 issue (seemingly unrelated)
There was a recent change in ZopeSkel, meaning that you if you use ZopeSkel 3+ you need to be in src
folder when running the command.
See note here:
https://github.com/collective/templer.plone.localcommands/#executing-local-commands
Autres conseils
In order for the paster localcommand to run, it must be called from the same directory that contains the .egg-info directory (or a child directory inside it). If pasterns unable to find the .egg-info directory, it cannot run a local command. Paster uses the location of the .egg-info directory to locate setup.cfg, which is then used to determine if any local command entry points are available.
Check to see that you have an .egg-info directory generated inside your package, and that you are invoking paster from the same location or a child folder.