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

