[Pythonmac-SIG] why does the Mac installer hack the user's .bash_profile?
ronaldoussoren at mac.com
Mon Apr 11 07:44:42 CEST 2011
On 8 Apr, 2011, at 0:56, Russell E. Owen wrote:
> In article <64461.1302209314 at parc.com>, Bill Janssen <janssen at parc.com>
>> I've got a Snow Leopard buildslave I'm trying to debug. So I thought
>> I'd try Python 2.7 on it. Normally, I advise people to never try to
>> install a different Python on a Mac, as it's too embedded in the OS to
>> do safely, without a great deal of domain knowledge. But here, I
>> figured I could always wipe the disk and start over without too much
>> So I ran the installer, and tried a few things, and it didn't solve my
>> buildbot problems. So I decided to go back to the original System
>> python. But now I find that the installer has put the 2.7 Python on my
>> PATH?!? It does this apparently by hacking ~/.bash_profile. In there,
>> there's a line saying
>> The original version is saved in .bash_profile.pysave
>> a file which doesn't seem to exist.
>> So, why didn't I notice myself checking the checkbox to do this in the
>> first place, and where is my original .bash_profile file?
> I'm surprised you can't find it. I've always had it saved on some
> obvious place. But I agree that hacking the file is ugly -- it least it
> could ask.
Feel free to file a bug and attach a patch that does this.
> In any case you can revert by just deleting the extra lines.
> Other gripes about the installer:
> - It names the version explicitly instead of using the Current symlink
That's intentional, if you install 2.6 with the default settings and 2.7 with the 'update shell profile' section disabled you'd want python 2.6 to be on $PATH while 2.7 shouldn't be. This cannot be done without hardcoding version.
> - It hacks the file even if doesn't need to (e.g. if Current is already
> on the $PATH then the new python will be found; I think that would be
> easy to check).
That's a bug, please file a report at bugs.python.org.
> - It adds a bunch of links to /usr/local/bin even though that is
> redundant with putting Python's bin directory on the $PATH. This makes
> it a headache to switch Python versions -- something developers often
> need to do when testing compatibility.
This behavior can be disabled when you run the installer. I agree that the default should be to not install files in /usr/local, although we have had users that complained that the 3.x installers didn't do this.
BTW. I've talked with Ned about this feature at Pycon and we'd like to move to a python-select command that gives you a command-line tool for managing the path to the current python (simular to gcc-select or xcode-select). That way it should be possible to do away with automaticly patching the shell profile.
More information about the Pythonmac-SIG