I completely agree. Most problems come from just getting started, and getting it right is not easy or simple. For example, the "Installing Pyramid" documentation page has 16 contributors and 70 commits over 4 years to reach its current state. That's a lot of time and effort.
https://github.com/Pylons/pyramid/blob/master/docs/narr/install.rst

Every "getting started" guide should always include system requirements with references for how to fulfill those requirements. System requirements include:

* Operating system
* Python version
* Python interpreter
* package manager (setuptools or pip, but do not use both)
* virtualenv or pyvenv
* setting an environment variable to the path of the virtual environment
* whether or not to activate the virtual environment (Pyramid documentation currently prefers NOT to activate the virtual environment, and instead use the aforementioned environment variable)
* clone repo, if necessary

Once you have explained all those things in your "getting started" guide, making sure every bit is flipped into perfect alignment with each other (also known as cosmic and planetary alignment), then and only then should you install the package and its dependencies, e.g. `$VENV/bin/easy_install "pyramid==1.5.2"`.

------------

Here are instructions that worked for me. I usually follow the "Pyramid way for newbies", if there is such a thing, when installing stuff.

I already have installed Python 2.7 (and several other versions, too) on Mac OS X from python.org, as well as setuptools installed system wide.

I first forked the original repo of ringo to my own repo, so that I could push commits and send pull requests to the author. It's a good way to give them feedback, too, by suggesting improvements. I started with the "quick start" guide at the URL:
http://ringo-dev.intevation.de/
...and heavily modified it so that it would work.

cd ~/projects
# clone my fork
hg clone ssh://[email protected]/stevepiercy/ringo
cd ringo
# set an environment variable to the virtual environment to be created
export e=~/projects/ringo/env
# create a virtual environment using the system python version 2.7 at location $e
virtualenv -p /usr/local/bin/python $e
# do NOT activate the virtual env, instead invoking all commands by their explicit path
# install ringo and its dependencies
$e/bin/python setup.py develop
# create a ringo app using a scaffold
$e/bin/pcreate -t ringo myfoo
cd myfoo
# install myfoo and its dependencies
$e/bin/python setup.py develop
# initialize and create the db for myfoo-admin
$e/bin/myfoo-admin db init
# add a module (note the English misspelling in the command)
$e/bin/myfoo-admin modul add bar
# start the server
$e/bin/pserve --reload development.ini

And I now have a working ringo.

Aside from the "getting started" documentation issues, I'm very happy to see a new SQL-based GUI admin to build web applications on top of Pyramid.

Finally, the patient folks on IRC in #pyramid are very helpful in pointing folks in the right direction. They've helped me tremendously to understand the essentials of all that system requirements stuff.

--steve


On 1/2/15 at 4:25 PM, [email protected] pronounced:

Hi, this looks very nice, but I am not able to get it running - the instructions in the 'get started' section of the website do not get me started, unfortunately.
First, I get
error: invalid command 'development'

remembering several other pyramid tutorials I tried to use
python setup.py develop

this seems to work, following the instructions I do
pcreate -t ringo foo

I then cd into foo, not foobar (this seems to be wrong in the instructions). However, there is no foo-admin. Hinted by the django similarity of your approach and from looking into ~/.pyenv/versions/2.7.9/bin I got the idea this should be

ringo-admin
but this gives me an error (see full traceback below):
ImportError: /home/xxx/.local/lib/python2.7/site-packages/lxml/etree.so: undefined symbol: PyUnicodeUCS4_DecodeLatin1

Argh, an unicode error, no, please not that kind of problems... I am giving up here for today.

I think I have to write about my experiences with several other pyramid based projects here. I have had similar problems with kotti and ptah in the recent past. I hope writing about it here will not be seen as ranting, but may give you an insight about the newcomer perspective. I looked at pyramid and was extremely satisfied, this really looks like the best way to build websites (for me) after some years of experience with several other (non-python) frameworks. I am really deeply impressed about the approaches taken with pyramid and the extensive documentation, everything I see sets a really very high quality standard. However, after some playing around of course I came to the point of not wanting to reinvent all the wheels, not only because I am a lazy dog, but because of the fear of doing things wrong. Especially all things security, like permissions, user signup and forms I really would like to build on something battletested, so I was starting to look into the several things that are out there and build up on pyramid, like kotti and ptah, and now ringo. The most significant experiences with these have been that I was not able to get them running. What is frustrating: I read a little bit into the sources, but I was not able to solve the problems. And what was even more frustrating was the knowledge, that this all is not some deeply involved hardcore hacker stuff that I am not understanding, it is all packaging and version isolation problems on the surface, so I feel like some little thing is keeping me away from usig all that great stuff because, of course, I can not build a real website with anything that throws errors I can not solve. So after reading lots of pyramid docs, studying sqlalchemy and several form libraries and trying to find the best way to handle user registrations and password issues I am now hitting the wall with "stupid little things" that all have to do with the setup process and the python environment. Yes, I know, I have to study every detail the python setup end deployment environment and understand the effects it produces in different python versions or what it means to use pyenv vs. vritualenvs and how this could hit me on setting up different webserver environments - I still did not do it, as it looked like "some periphal knowledge about the setup process that will not be so problematic" - it turnes out that it is the main problem I have now and I feel like I can not use all these great tools at my hands because of not knowing about this basic setup things. Ok, I know this is all my fault not studying all the details about the python setup process (BORING!) - but to make it a little bit more constructive I would like to ask all you great developers out there: please test your setup instructions, especially the ones on page one, manually and test them in a "fresh" python environment, test them with pyenv and several python versions, test them on a stock debian and ubuntu with system python, and please always link to the relevant knowledge about the setup process - please avoid magic that does not work. BTW unfortunately the wild history of python packaging leads to many irrelevant and misleading information on the web, so it is totally ok to link to the really needed information. I am now trying to dig into http://pythonhosted.org//setuptools/setuptools.html to better understand all that problems, but this is a real torture. I would rather just like to use this stuff and have it working, sigh...

Thanks for your attention,
Tam

[1] Full traceback of ringo-admin:

Traceback (most recent call last):
File "/home/xxx/.pyenv/versions/2.7.9/bin/ringo-admin", line 9, in <module>
load_entry_point('ringo==0.17.0', 'console_scripts', 'ringo-admin')()
File "/home/xxx/Dev/Python/pyramid-ringo/ringo-hg/ringo/scripts/admin.py", line 221, in main
args.func(args)
File "/home/xxx/Dev/Python/pyramid-ringo/ringo-hg/ringo/scripts/db.py", line 140, in handle_db_init_command
handle_db_upgrade_command(args)
File "/home/xxx/Dev/Python/pyramid-ringo/ringo-hg/ringo/scripts/db.py", line 144, in handle_db_upgrade_command
cfg = get_alembic_config(args)
File "/home/xxx/Dev/Python/pyramid-ringo/ringo-hg/ringo/scripts/db.py", line 132, in get_alembic_config
app_config = get_appsettings(args.config)
File "/home/xxx/.local/lib/python2.7/site-packages/pyramid/paster.py", line 53, in get_appsettings
global_conf=options)
File "/home/xxx/.local/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 261, in appconfig
global_conf=global_conf)
File "/home/xxx/.local/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 296, in loadcontext
global_conf=global_conf)
File "/home/xxx/.local/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 320, in _loadconfig
return loader.get_context(object_type, name, global_conf)
File "/home/xxx/.local/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 454, in get_context
section)
File "/home/xxx/.local/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 476, in _context_from_use
object_type, name=use, global_conf=global_conf)
File "/home/xxx/.local/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 406, in get_context
global_conf=global_conf)
File "/home/xxx/.local/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 296, in loadcontext
global_conf=global_conf)
File "/home/xxx/.local/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 328, in _loadegg
return loader.get_context(object_type, name, global_conf)
File "/home/xxx/.local/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 620, in get_context
object_type, name=name)
File "/home/xxx/.local/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 646, in find_egg_entry_point
possible.append((entry.load(), protocol, entry.name))
File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2184, in load
['__name__'])
File "/home/xxx/Dev/Python/pyramid-ringo/foo/foo/__init__.py", line 6, in <module>
from ringo.config import setup_modules
File "/home/xxx/Dev/Python/pyramid-ringo/ringo-hg/ringo/config.py", line 14, in <module>
from ringo.views.base import (
File "/home/xxx/Dev/Python/pyramid-ringo/ringo-hg/ringo/views/base/__init__.py", line 28, in <module>
from ringo.views.base.print_ import (
File "/home/xxx/Dev/Python/pyramid-ringo/ringo-hg/ringo/views/base/print_.py", line 3, in <module>
from py3o.template import Template
File "build/bdist.linux-x86_64/egg/py3o/template/__init__.py", line 6, in <module> File "build/bdist.linux-x86_64/egg/py3o/template/main.py", line 6, in <module> ImportError: /home/xxx/.local/lib/python2.7/site-packages/lxml/etree.so: undefined symbol: PyUnicodeUCS4_DecodeLatin1



------------------------
Steve Piercy, Soquel, CA

--
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/pylons-discuss.
For more options, visit https://groups.google.com/d/optout.

Reply via email to