At 10:11 PM 3/16/2006 +0000, Maris Fogels wrote: >All of our applications are installed in a flat structure; an >application directory is one big file-soup. The applications are so >large that we do not have the budget to correct them, so I must >emulate this flat structure in the installation target directory. The >emulations requires the use of a setup.cfg and the distutils '$base' >varible: > ># example setup.cfg >[install] >install-base=/data/myproject >install-lib=$base >install-scripts=$base >install-headers=$base >install-data=$base
Note that easy_install only has the equivalent of an install_lib and install_scripts; it doesn't install headers or any data other than package data embedded in eggs. >1. I unpacked the project sources in ~/src/myproject-1.0. When I tried to >use easy_install from the ~/src directory it ignores the install-base >directory >setting specified in setup.cfg: By design, easy_install only loads its own settings from ./setup.cfg. Any setup scripts it runs will read their own setup.cfg files, but since easy_install only runs "setup.py bdist_egg" on its targets, installation-related settings have no effect. This is intentional, since it's not good practice for a distributed setup.cfg to customize the install location. If easy_install honored those settings in the general case, it could result in quite a bit of chaos. >The command works if I cd into the project directory itself, or if I >specify the install directory with '-d' Yes, those are the two ways you can do that. >2. After successfully installing I attempted to uninstall the project >as per the instructions on the EasyInstall wiki page, by changing the >installed files to use a multi-install. It produces the following error: > >$ cd ~/src/myproject-1.0 >$ easy_install -m . I suggest using "easy_install -m myproject", as this does not need to run a setup script. Instead, it will simply detect that 'myproject' is already installed and remove it from sys.path. >zipimport.ZipImportError: bad local file header in >/data/myproject/myproject-1.0-py2.3.egg > >If I re-run the 'easy_install -m .' command it works properly. >Everything in the installed .egg file appears to work correctly, so I >could not figure out why a ZipImportError was being raised by a >working .egg. Me either. The only time I've seen anything like that happen is with Python 2.3 on a 64-bit platform. If you can figure out how to reproduce it, please let me know. >3. This may be a problem with distutils or setuptools, depending on >how the install command is dispatched. I thought it would be nice to put the >install record in the same directory I installed the other files in, >so I appended the following to setup.cfg: > >record=$base/uninstall.dat > >Alas, $base is not expanded for the 'record' configuration option. I think this feature can be added by simply inlcuding 'record' in the list of variables that are expanded in line 125 of setuptools/command/easy_install.py. If you have a chance to try that, please let me know if it works for you, and then I'll add it to the official version. _______________________________________________ Distutils-SIG maillist - [email protected] http://mail.python.org/mailman/listinfo/distutils-sig
