3 ms·
Python with virtualenv and pip has been fairly stress free in my experience.
by keypusher 13y ago
Python with virtualenv and pip has been fairly stress free in my experience.
- kawsper 13y agoI feel Python apps is quite a pain to install. I had to deal with a Graphite installation, and it consists of 50% packages from apt-get and 50% of packages from easy_install. https://gist.github.com/kaspergrubbe/5792356 https://gist.github.com/kaspergrubbe/5792356 Is this an issue with Graphite? Because I feel this setup is quite elaborate compared to using Rubygems and bundler.
- shabble 13y agoThat's a rather alarming install script, especially things like: sudo apt-get --assume-yes upgrade in it. But to your point, I think most of the easy_install packages could be handled by pip. The apt packages look like almost all non-python major components like rabbitmq, apache, sqlite, etc which are best provided that way. I'm not sure about Graphite itself, but at a quick glance it's not clear why it's all 'sudo python setup.py' rather than in a package.
- gingerlime 13y agoFrom experience with both python/django and ruby/rails, I think python is generally simpler. Start with the fact that python itself is usually pre-installed on most distros, and usually a recent-enough version to get you started. Ruby on the other hand is much harder to just get installed, choosing the right (minor)version, rvm/rbenv choices etc. I tend to compile my ruby, but it's a lengthy and rather fragile process. Graphite is both a good and bad example. Good because it is really complex and documentation is a little sketchy. I've written a fabric script[1] that automates the process, and it's far from trivial. Bad example, because it's not really a single app, but a system - a collection of tools with dependencies. Even if we discount the web server (nginx or apache?), it includes things like the core "database" (whisper), the event listener (carbon, which in itself is complex depending on your setup), the graphic and processing libraries, and then graphite which is a pretty involved django app with its own sub-components. So when you say graphite, it's really a full-blown system with lots of moving parts that need to fit in together. I can't think of an equivalent example in the rails world, but any rails app with a db, caching layer, and a few other external components won't be much easier to get set up and running. [1]https://github.com/gingerlime/graphite-fabric https://github.com/gingerlime/graphite-fabric
- pekk 13y agoThis is an issue with Graphite. There is no way that Python can fix Graphite's install breakages unless Graphite wants to fix them.
- keypusher 13y agoI guess that's because you can't pip install system packages, only Python packages.
- kyzyl 13y agoI've generally had the same experience, although that particular toolchain only solves part of the deployment problem. The other caveat is that you will eventually run into a situation where, say, pip doesn't quite make it to the finish line, and you're left wondering why. If my memory serves me, the last time this happened to me was while I tried to install a project that used ipython (=zmq+readline+pyglets+..+..+) and needed a numpy that was properly linked to the intel MKL. It failed at the 'pip level' but I didn't arrive at a solution wasn't clear until I dove much deeper (python build, MKL build, ZMQ build, setuptools interactions, autoreconf incantations, etc.) There are definitely times when it pays to understand things like the differences betweening pipping and easy_installing. However, when dealing with projects that are closer to pure python, and/or less complicated, workon proj && pip install < requirements.txt has almost never failed me. More and more I find myself moving to Ansible. So good.