I have a problem with compiling vim with preferred python version.
When I use --enable-pythoninterp
it compiles with system OSX python version.
When I use --enable-pythoninterp=dynamic
I get an error in vim while trying :py import sys
% git clone https://github.com/b4winckler/macvim.git % cd macvim % ./configure --enable-pythoninterp \ --with-python-config-dir=/usr/local/lib/python2.7/config <- this option has no affects on result ... checking for python... /usr/local/bin/python checking Python version... 2.7 checking Python is 1.4 or better... yep checking Python's install prefix... /usr/local checking Python's execution prefix... /usr/local checking Python's configuration directory... /usr/local/lib/python2.7/config ... % make ... ** BUILD SUCCEEDED ** % open src/MacVim/build/Release/MacVim.app
In the opened MacVim I type:
:py import sys; print (sys.version, sys.executable) ('2.6.1 (r261:67515, Jun 24 2010, 21:47:49) [GCC 4.2.1 (Apple Inc. build 5646)]', '/usr/bin/python')
Why 2.6.1
?
Why /usr/bin/python
?
My default python is 2.7! And it lives at /usr/local/bin/python
I was searching for solution all day. And I found it. It is =dynamic attribute (but this solution had not explanation).
After that I tried to recompile vim with dynamic python:
% ./configure --enable-pythoninterp=dynamic ... output the same ... % make % open src/MacVim/build/Release/MacVim.app
In opened MacVim:
:py import sys
And here comes an error:
E370: Could not load library libpython2.7.a E263: Sorry, this command is disabled, the Python library could not be loaded.
My OSX version is 10.6.8.
Default python version is 2.7.
% which python /usr/local/bin/python
Can anybody explain how python is integrating into vim during the compilation?
And how to fix the error with libpython2.7.a?
update: I no longer have the environment described at the question. So I couldn't test new answers. But remaining part of mankind will appreciate your help.
Yes, you should be able to switch between python versions. As a standard, it is recommended to use the python3 command or python3. 7 to select a specific version. The py.exe launcher will automatically select the most recent version of Python you've installed.
My solution was to delete the configure cache file which was created from a previous built where I used the python which came with OSX.
Then I installed a new python version with homebrew and couldn't get .configure to take the new python version, even though I updated my PATH variable and which python showed the right python version.
Deleting the cache file and running configure again solved my problem.
rm src/auto/config.cache ./configure --enable-pythoninterp
Maybe it helps anybody.
I had the same problem. I compiled Macvim from source and tried to use the python version 2.7 from macports in:
/opt/local/bin/python
Some modules were not found, for example the os module. The reason for this was that the PYTHONPATH variable inside macvim is wrong!
To test, open macvim and type:
:python print sys.path
I got the following paths (note the ending, which is nonsense):
... /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.5/' ...
I presume the reason is in the linker flag "-framework Python". This picks up the wrong, i.e. the system python framework. If I change the line in the src/auto/configure
script from:
if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \ "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then vi_cv_path_python_plibs="-framework Python"
to
if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \ "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then vi_cv_path_python_plibs="-F/opt/local/Library/Frameworks -framework Python"
Running configure again, after make clean, Macvim compiles and works as expected. The -F flag tells the linker in which directory to find the following framework. Macports installs the Python.framework in this directory, YMMV.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With