By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,269 Members | 1,519 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,269 IT Pros & Developers. It's quick & easy.

Egg problem (~/.python-eggs)

P: n/a
I'm trying to install a program that uses Durus on a server. It
appears that if a Python program uses eggs, it creates a
~/.python-eggs/ directory, so the home directory must be writeable.
This conflicts with server environments where you want to run a daemon
with minimum privileges. Second, it appears to use the real user ID
rather than the effective user ID to choose the home directory. In
this case I'm trying to use start-stop-daemon on Linux to start my
Python program, switching from user 'root' to user 'apache'.

# start-stop-daemon --start --chuid apache:apache --make-pidfile
--pidfile /var/run/cameo.pid --exec
/var/www/apps/cameo/bin/cameo_server.py --
Traceback (most recent call last):
File "/var/www/apps/cameo/bin/cameo_server.py", line 3, in ?
from durus.client_storage import ClientStorage
File "build/bdist.linux-i686/egg/durus/client_storage.py", line 7, in
?
File "build/bdist.linux-i686/egg/durus/serialize.py", line 9, in ?
File "build/bdist.linux-i686/egg/durus/persistent.py", line 15, in ?
File "build/bdist.linux-i686/egg/durus/_persistent.py", line 7, in ?
File "build/bdist.linux-i686/egg/durus/_persistent.py", line 4, in
__bootstrap__
File
"/usr/local/lib/python2.4/setuptools-0.6a10-py2.4.egg/pkg_resources.py",
line 799, in resource_filename
return get_provider(package_or_requirement).get_resource_ filename(
File
"/usr/local/lib/python2.4/setuptools-0.6a10-py2.4.egg/pkg_resources.py",
line 1187, in get_resource_filename
self._extract_resource(manager, self._eager_to_zip(name))
File
"/usr/local/lib/python2.4/setuptools-0.6a10-py2.4.egg/pkg_resources.py",
line 1204, in _extract_resource
real_path = manager.get_cache_path(self.egg_name,
self._parts(zip_path))
File
"/usr/local/lib/python2.4/setuptools-0.6a10-py2.4.egg/pkg_resources.py",
line 836, in get_cache_path
ensure_directory(target_path)
File
"/usr/local/lib/python2.4/setuptools-0.6a10-py2.4.egg/pkg_resources.py",
line 2301, in ensure_directory
os.makedirs(dirname)
File "/usr/lib/python2.4/os.py", line 156, in makedirs
makedirs(head, mode)
File "/usr/lib/python2.4/os.py", line 156, in makedirs
makedirs(head, mode)
File "/usr/lib/python2.4/os.py", line 159, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/root/.python-eggs'
Can I make it use a different eggs directory? Any other idea how to
install a program using eggs on a server?

BTW, Python is Gentoo's /usr/bin/python 2.4.2. The eggs are installed
in /usr/local/lib/python2.4 to prevent them from mixing with Gentoo
packages in /usr/lib.

--Mike <sl********@gmail.com>

Aug 31 '06 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Mike Orr wrote:
I'm trying to install a program that uses Durus on a server. It
appears that if a Python program uses eggs, it creates a
~/.python-eggs/ directory, so the home directory must be writeable.
This conflicts with server environments where you want to run a daemon
with minimum privileges. Second, it appears to use the real user ID
rather than the effective user ID to choose the home directory. In
this case I'm trying to use start-stop-daemon on Linux to start my
Python program, switching from user 'root' to user 'apache'.
I solved the immediate problem by reinstalling Durus as a directory egg
rather than a compressed egg. So is the answer just not to use
compressed eggs?

--Mike <sl********@gmail.com>

Aug 31 '06 #2

P: n/a
>I'm trying to install a program that uses Durus on a server. It
appears that if a Python program uses eggs, it creates a
~/.python-eggs/ directory, so the home directory must be writeable.
This conflicts with server environments where you want to run a daemon
with minimum privileges. Second, it appears to use the real user ID
rather than the effective user ID to choose the home directory. In
this case I'm trying to use start-stop-daemon on Linux to start my
Python program, switching from user 'root' to user 'apache'.

I solved the immediate problem by reinstalling Durus as a directory egg
rather than a compressed egg. So is the answer just not to use
compressed eggs?
If the .egg file contains binary modules, those must be unpacked out of
the .egg (a Zip file actually) so that the kernel/lib-loader can map them.
If your .egg package doesn't have any binary modules, then it doesn't need
to unpack anything.
--
damjan
Aug 31 '06 #3

P: n/a
Mike Orr wrote:
[... snipp ...]
Can I make it use a different eggs directory? Any other idea how to
install a program using eggs on a server?
I had a similar issue with tracd on gentoo. My solution was setting
PYTHON_EGG_CACHE=/tmp/.egg_cache in /etc/conf.d/tracd and exporting that
var in /etc/init.d/tracd before calling start-stop-daemon, e.g.

export PYTHON_EGG_CACHE=${PYTHON_EGG_CACHE}
start-stop-daemon --start ....
cheers
Paul

Sep 1 '06 #4

This discussion thread is closed

Replies have been disabled for this discussion.