Hi James, * James Vega <[EMAIL PROTECTED]> [2008-07-07 22:04]: > On Mon, Jul 07, 2008 at 09:16:21PM +0200, Nico Golde wrote: > > * James Vega <[EMAIL PROTECTED]> [2008-07-07 20:11]: > > > On Mon, Jul 07, 2008 at 07:11:10PM +0200, Nico Golde wrote: [...] > > [EMAIL PROTECTED]:somedir$] python /tmp/test.py > > ['/tmp', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', > > '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', > > '/usr/local/lib/python2.5/site-packages', > > '/usr/lib/python2.5/site-packages', > > '/usr/lib/python2.5/site-packages/Numeric', > > '/usr/lib/python2.5/site-packages/PIL', > > '/var/lib/python-support/python2.5', > > '/var/lib/python-support/python2.5/gtk-2.0', > > '/usr/lib/python2.5/site-packages/wx-2.6-gtk2-unicode'] > > > > The python docs also state "As initialized upon program startup, the first > > item > > of this list, path[0], is the directory containing the script that was used > > to > > invoke the Python interpreter." > > In an interactive session, sys.path[0] is '' because the "script" is > simply the python interpreter. In your example, if you were in /tmp > when you ran test.py you would have seen '' as sys.path[0] as well.
Yes sure that conforms to the quote from the python docs. > In the case of Vim, sys.path[0] is always Vim's current working > directory. [...] > From what I can tell, every time the :python command (which is simply a > thin wrapper to the PyRun_SimpleString function from Python's library) > is run from Vim, it's like running a new script. > > This would explain why why sys.path[0] and os.getcwd() are updated when > we change the current working directory of the Vim process. Ok, that explains why this happens. This is somehow bad because everyone who writes a python vim script needs to be aware of that. Can you think of a better solution than the following? --- /usr/share/vim/addons/plugin/bike.vim 2008-07-07 22:14:28.000000000 +0200 +++ bike.vim.new 2008-07-07 22:14:26.000000000 +0200 @@ -100,6 +100,7 @@ try: if sys.version_info < (2, 2): raise ImportError, 'Bicycle Repair Man needs Python 2.2 or newer' + sys.path.remove('') import bike bikectx = bike.init() bikectx.isLoaded # make sure bike package is recent enough Kind regards Nico -- Nico Golde - http://www.ngolde.de - [EMAIL PROTECTED] - GPG: 0x73647CFF For security reasons, all text in this mail is double-rot13 encrypted.
pgp0m9tQIfU21.pgp
Description: PGP signature