I just found TurboGears online, saw my favorite web app toys (CherryPy
& SQLObject) well integrated and was intrigued by the video. And as I
am currently looking for a web framework for a larger project, I am
evaluating the normal contenders so far. And now as I am ready to "turn
back" to plain CherryPy with stuff, your framework shows up. Nice
coincidence.
But what makes me a little uneasy so far is the installation page to be
honest. :) Let me state first, that I am more or less new to the Egg
stuff. The technology sounds cool, but I have zero experience with it
so far.
I have some stuff (Elementtree and cElementtree) installed already,
Fedora Core brings it along and uses it heavily. Hi,
I just found TurboGears online, saw my favorite web app toys (CherryPy
&
SQLObject) well integrated and was intrigued by the video. And as I am
currently looking for a web framework for a larger project, I am
evaluating
the normal contenders so far. And now as I am ready to "turn back" to
plain
CherryPy with stuff, your framework shows up. Nice coincidence.
But what makes me a little uneasy so far is the installation page to be
honest. :) Let me state first, that I am more or less new to the Egg
stuff.
The technology sounds cool, but I have zero experience with it so far.
Hopefully, my questions are to dumb.
I have some stuff (Elementtree and cElementtree) installed already,
Fedora
Core brings it along and uses it heavily. Does the Easy Install code
take care
of that? Or does it brutally install the egg version?
How about CherryPy, FormEncode and SQLObject? There I track the svn
repos and
have them installed already. Are they skipped too?
For the former packages it is obvious to me, why you use the beta
versions. :)
But what does kid 0.7 provide, that you use the alpha version instead
the
0.6.4 stable version?
Best regards,
Oliver
What should happen is that EasyInstall will tell you that conflicting
packages are already installed, and abort the installation. You will
then have to give it a command line option to tell it whether to ignore
this or delete the conflicting packages, i.e. either
--delete-conflicting or --ignore-conflicts-at-my-risk. For more
information, see:
http://peak.telecommunity.com/DevCenter/EasyInstall
Note that EasyInstall will consider any non-Egg packages in
site-packages to be "conflicting", regardless of the version.
Old-style (pre-egg) Python packages do not carry any
universally-readable version information, so there is no way for
EasyInstall to detect what version is present. It simply looks at
whether there are packages or modules with the same names as ones in
the eggs you're installing. If such modules exist, and they will end
up before the egg on sys.path, blocking you from importing anything in
the egg, then it considers them "conflicting".
If you don't want to delete your existing packaged installations, the
best thing to do is follow the "Non-Root Installation" procedure
described on the EasyInstall doc page above. This will give you a
"virtual Python" with its own site-packages that inherits from your
systemwide one, and it will be safe to tell EasyInstall to
--delete-conflicting because it will just be deleting symlinks from
your "virtual Python" instead of from the real Python. It will have no
effect on your "real" system Python.
Well, in most shared environments you need a way for users and/or
specific applications to have additional PYTHONPATH directories anyway,
so it's not really that much of an additional step. Apart from
setuptools itself, eggs can be installed in pretty much any directory
on your PYTHONPATH. However, in my quick answer to your earlier
question, I didn't want to get into the issue of whether TurboGears
would run with such a custom setup. In principle, it should be
possible for you to just select any directory on your regular PATH that
you have write privileges to, as long as you're willing to always use
require() to select packages when writing code that's not part of a
TurboGears project using "setup.py develop". That directory can then
become your custom environment, as long as you don't have any
conflicting packages earlier on sys.path.
It's likely to take a good while before any major Linux or BSD
distribution uses eggs as part of their standard installation and
packaging. Right now, it's not even a "blessed" Python standard, and
it would take a while for the distros to repackage their existing
Python packages to fit.
Ultimately, EasyInstall is intended to empower the individual Python
user and/or application to install the things they need, wherever they
need them, without having to clear everything through a central
packaging authority. So, there's a tremendous amount of flexibility as
to how you install things with EasyInstall, but that necessarily means
a lot of documentation is required to cover all scenarios well.
One thing I'll look into for future versions of EasyInstall, however,
is adding activated eggs to the beginning of sys.path instead of the
end, as that would possibly allow some even more flexible deployment
options, without needing to worry about conflicts from system packages.
Then, you could just set up a bin directory for a given project and
direct EasyInstall to install everything in that directory, without
needing to create a virtual Python.
1. not everyone has 24/7 internet link(and sometimes firewall may block
things)
2. the source is distributed and the link specified in it can come and
go(see problem about kid).
(2) is the biggest issue. Without a central repository, it is very hard
to solve. Perl at least maintain a central CPAN repository so once a
package is released, it will be there.
I know having a CPAN equivalent is impossible at the moment. The next
best thing is to have Kevin maintains the tree, which is also why I
said unmanageable as it puts heavy burden on him.
I have seen the same thing in another linux project, openwrt on WRT54G.
It also use a similar buildroot system that grabs things incrementally
as needed and face the exact same problem of the source url can be
invalid in no time.
Actually, I have tried to comment out the setuptools style installation
in setup.py and all of the packages can install fine using the core
distutils. It is the actual usage of querying the pkg_resources in
TurboGears that stops me from doing it manually.
It keeps them, but EasyInstall won't find them if the package author
doesn't "unhide" the older versions; PyPI hides older versions by
default. They're still there, so if you linked to them with download
URLs on your project page they'll still be able to be found.
(Unless of course the package author deletes the release from PyPI, of
course.)