I am trying to use Vim R plugin [1], which is a Python plugin that uses
PyWin32 on Windows. I have installed Python 2.7.1 and PyWin32. It is
installed correctly, as I am able to do a "import win32api" from python
shell without errors. But, on GVim, if I do:
:python import win32api
I receive the following error:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: DLL load failed: The specified module could not be found.
Notice that this is not the standard error for module not found ("No
module named x"). It is probably related to the path python uses for its
DLL modules. I have played with sys.path, but without success.
I also noticed the first path in sys.path is "C:\\must>not&exist", which
is probably a bug. Don't know if this could be related, but I tried do a
sys.path.pop(0), and it didn't work.
Anyone has an idea of the problem?
Thanks
[1] - http://www.vim.org/scripts/script.php?script_id=2628
--
*Alexandre Martani* | GDX Investimentos
<mailto:alexandr...@gdx.com.br>
> Hello all,
> I am trying to use Vim R plugin [1], which is a Python plugin
> that uses PyWin32 on Windows. I have installed Python 2.7.1
> and PyWin32. It is installed correctly, as I am able to do a
> "import win32api" from python
> shell without errors. But, on GVim, if I do:
> :python import win32api
> I receive the following error:
> Traceback (most recent call last):
> File "<string>", line 1, in <module>
> ImportError: DLL load failed: The specified module could not
> be found.
> Notice that this is not the standard error for module not
> found ("No module named x"). It is probably related to the
> path python uses for its DLL modules. I have played with
> sys.path, but without success.
> I also noticed the first path in sys.path is
> "C:\\must>not&exist", which is probably a bug. Don't know if
> this could be related, but I tried do a sys.path.pop(0), and
> it didn't work.
> Anyone has an idea of the problem?
just guessing here, but python 2.7.1 is fairly new -- there's
a good chance your vim was compiled with 2.6 and can't find
the 2.6 dll
I think sc is correct. In Vim, use :version and carefully
inspect what it says about the Python support which was
configured when your Vim was compiled.
John
Compilation: cl -c /W3 /nologo -I. -Iproto -DHAVE_PATHDEF -DWIN32
-DFEAT_CSCOPE -DFEAT_NETBEANS_INTG -DFEAT_XPM_W32 -DWINVER=0x0400
-D_WIN32_WINNT=0x0400 /Fo.\ObjGOLYHTR/ /Ox /GL -DNDEBUG /Zl /MT
-DFEAT_OLE -DFEAT_MBYTE_IME -DDYNAMIC_IME -DFEAT_GUI_W32 -DDYNAMIC_ICONV
-DDYNAMIC_GETTEXT -DFEAT_TCL -DDYNAMIC_TCL
-DDYNAMIC_TCL_DLL=\"tcl83.dll\" -DDYNAMIC_TCL_VER=\"8.3\" -DFEAT_PYTHON
-DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python27.dll\" -DFEAT_PYTHON3
-DDYNAMIC_PYTHON3 -DDYNAMIC_PYTHON3_DLL=\"python31.dll\" -DFEAT_PERL
-DDYNAMIC_PERL -DDYNAMIC_PERL_DLL=\"perl512.dll\" -DFEAT_RUBY
-DDYNAMIC_RUBY -DDYNAMIC_RUBY_VER=191
-DDYNAMIC_RUBY_DLL=\"msvcrt-ruby191.dll\" -DFEAT_BIG /Fd.\ObjGOLYHTR/ /Zi
Besides, it is finding Python DLL, since the problem only occour when
importing win32api, but I can use other python modules without problem.
Alexandre
On Jul 1, 5:01 am, "John Beckett" <johnb.beck...@gmail.com> wrote:
> Alexandre Martani wrote:
> > :python import win32api
>
> > I receive the following error:
>
> > Traceback (most recent call last):
> > File "<string>", line 1, in <module>
> > ImportError: DLL load failed: The specified module could not be found.
>
Is the directory where the Win32API DLLs are in the Windows environment
variable PATH?
If not, please try to add it there and restart VIM. Do the same also for
the R DLLs.
By the way: I wasn't aware of this VIM R plugin. I like R-Project and
VIM. So this is a good fit.
Regards, Roland
The module works when used directly from the Python shell (only fails
from Gvim). I have checked os.environ["PATH"] from both instances, and
they are basically equal (they both includes "C:\Python2.7"), so I think
this is not the problem. Is there any other paths Windows uses to search
its DLLs?
Alexandre
I tried to add a lot of paths, but I am still getting this error.
:python print "\n".join(os.environ["PATH"].split(";"))
C:\Python27\
C:\Python27\Scripts
C:\WINDOWS\system32
C:\WINDOWS
C:\WINDOWS\System32\Wbem
C:\WINDOWS\system32\WindowsPowerShell\v1.0
C:\Python27
C:\Program Files\TortoiseSVN\bin
%APPDATA%\Python\Scripts
C:\Program Files\Vim\vim73
C:\Python27\Lib\site-packages\win32
C:\Python27\Lib\site-packages\win32\lib
C:\Python27\Lib\site-packages\pywin32_system32
C:\Python27\Lib\site-packages\win32
C:\Python27\Lib\site-packages
Any other idea of paths which could be missing?
Same problem.
> 2) Examine sys.path from Vim
> :py import sys; print sys.path
> I have these
> 'C:\\Python\\lib\\site-packages'
> 'C:\\Python\\lib\\site-packages\\win32'
> 'C:\\Python\\lib\\site-packages\\win32\\lib'
> 'C:\\Python\\lib\\site-packages\\Pythonwin'
>
> 3) Perhaps you have several conflicting versions of Python or PyWin32
> installed? 32- vs 64-bit?
>
> 4) Did you install PyWin as Admin? If not, try to reinstall.
I have removed all versions of Python and removed folders C:/Python2.7.
I also tried to use ActivePython, as in my experiences it fixes some
problems with windows paths, but none of them worked. Someone using
Python 2.7 there? I can try later to install Python 2.6.
>> I also noticed the first path in sys.pat
h is "C:\\must>not&exist", which
>> is probably a bug. Don't know if this could be related, but I tried do a
>> sys.path.pop(0), and it didn't work.
>
> It used to be an empty string. It was changed to this bogus path for
> some security reasons:
> http://ftp.nluug.nl/vim/patches/7.2/7.2.045
It was changed, but I suppose from the path that it should have been
removed later:
+ /* Remove the element from sys.path that was added because of our
+ * argv[0] value in PythonMod_Init(). Previously we used an empty
+ * string, but dependinding on the OS we then get an empty entry or
+ * the current directory in sys.path. */
+ PyRun_SimpleString("import sys; sys.path = filter(lambda x: x !=
'/must>not&exist', sys.path)");
I think it is not being removed because Python on Windows changes it to
'C:\\must>not&exist'.