Bug#484305: PoC not working for bicyclerepair
Nico Golde
nion at debian.org
Mon Jul 7 20:15:44 UTC 2008
Hi James,
* James Vega <jamessan at debian.org> [2008-07-07 22:04]:
> On Mon, Jul 07, 2008 at 09:16:21PM +0200, Nico Golde wrote:
> > * James Vega <jamessan at debian.org> [2008-07-07 20:11]:
> > > On Mon, Jul 07, 2008 at 07:11:10PM +0200, Nico Golde wrote:
[...]
> > [nion at coredump: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 - nion at jabber.ccc.de - GPG: 0x73647CFF
For security reasons, all text in this mail is double-rot13 encrypted.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
Url : http://lists.alioth.debian.org/pipermail/pkg-vim-maintainers/attachments/20080707/d18df838/attachment-0001.pgp
More information about the pkg-vim-maintainers
mailing list