uninstalling python27 killed vim (actual issue was more complicated and involves Mercurial)

Peter p-santoro at sbcglobal.net
Tue Jan 28 06:13:06 EST 2014


I'm posting this information to help others who are transitioning from 
Python 2.x to Python 3.x and are using Vim and Mercurial on Windows.

BACKGROUND

Old workstation configuration: 32-bit Windows XP/SP3, Python 2.7.6 and 
3.3.3, Mercurial 2.8.2, PATH contained Python before Mercurial, dual 
boot with Slackware 14.0

New workstation configuration: 64-bit Windows 7/SP1, 64-bit Python 
3.3.3, 64-bit Mercurial 2.8.2, PATH contained Python before Mercurial, 
dual boot with Slackware64 14.1

Early last year, I ported dozens of Python 2.7 tools that I wrote to 
automate various development tasks to Python 3 (via 2to3 script and 
testing).  After the ports were completed, I had my colleagues replace 
their Python2 installations with Python3.  We quickly uncovered/fixed a 
few issues (mostly related to Unicode) that I missed in my initial 
testing.  We've been happily running the Python3 versions for months 
now, but I've been reluctant to remove Python27 from my old (soon to be 
retired) workstation.

PROBLEM

Yesterday, I finally decided to say goodbye to Python27 on Windows and 
uninstalled it from my old workstation.  A little while later, I noticed 
that vim no longer worked.  Gvim.exe silently failed and vim.exe failed 
with the following error:

ImportError: No module named site

After reading the relevant vim documentation 
(http://vimdoc.sourceforge.net/htmldoc/if_pyth.html#python-dynamic) and 
doing a few Google searches, I decided to run vim under windbg to see 
what was actually going on.  Windbg showed that vim loaded the 
python27.dll from my Mercurial installation just before exiting.  A 
quick look inside Mercurial's library.zip file showed that the site.py 
module was not included.  OK, so now things were starting to make sense.

WORKAROUND

I took Mercurial out of the PATH, which returned vim to working order. 
I then wrote the following two line hg.bat script and copied it to a 
directory include in the PATH:

@echo off
"C:\Program Files\Mercurial\hg.exe" %*

With this workaround, both vim and hg appear to be once again working on 
the old workstation.

64-BIT WINDOWS

As the vim for Windows package I installed is a 32-bit application, I 
didn't have this issue on 64-bit Windows using 64-bit Mercurial. 
However, I believe the same issue would occur if 32-bit Mercurial is 
used on 64-bit Windows.

Hopefully this information is useful to other Python, Vim, and Mercurial 
users.

Peter Santoro



More information about the Python-list mailing list