python 2 and 3 modules

David Demelier demelier.david at gmail.com
Mon Jul 29 10:22:35 UTC 2013


2013/7/29 Marcus von Appen <mva at freebsd.org>:
> David Demelier <demelier.david at gmail.com>:
>
>
>> 2013/7/28 Daniel Braniss <danny at cs.huji.ac.il>:
>>>
>>> Hi,
>>> I need to be able to have both (2.7 and 3.2) modules.
>>> setting PYTHON_VERSION=3.2 in /etc/make.conf compiles properly,
>>> but make install, insists that that the 2.7 version is installed!
>>> after deinstalling, it will install the 3.2 version in the correct
>>> directory:
>>>         /usr/local/lib/python3.2/site-path
>>> but now I lost the 2.7 version.
>>>
>>> the same happens if I try to install the 2.7 version, it will complain
>>> that the 3,2 version is installed.
>>>
>>> BTW, the comments in ports/Mk/bsd.python.mk are very confusing and
>>> some are wrong:
>>> # PYTHON_VERSION        - Version of the python binary in your ${PATH},
>>> in the
>>> #                                         format "python2.0". Set this in
>>> your
>>> makefile in case you
>>> #                                         want to build extensions with
>>> an
>>> older binary.
>>> #                                         default: depends on the version
>>> of
>>> your python binary
>>>
>>> setting it to "python3.2" produces errors in the make, while 3.2 is ok
>>>
>>> is there any fix?
>>>
>>> thanks,
>>>         danny
>>>
>>
>> For the moment its pretty difficult to install python 2.7 and 3.3 at
>> the same time. However, if you plan to install python 3.3, you need to
>> set PYTHON_DEFAULT_VERSION to "python3.3" and not PYTHON_VERSION.
>
>
> No, it is not.
>
> cd /usr/ports/lang/python27 && make install clean
> cd /usr/ports/lang/python32 && make install clean
> cd /usr/ports/lang/python33 && make install clean
>
> works like a charm. If you however want to use Python modules, it might
> become
> more difficult. It was discussed some time ago on the freebsd-python mailing
> list
> without an applicable result.
>
> If you need to have the same Python module for different versions around, I
> would
> recommend to use virtualenv in favour of the ports infrastructure, since
>
> make -DPYTHON_DEFAULT_VERSION=xxx <python-module>    - or -
> make -DPYTHON_VERSION=xxx <python-module>     - or -
> make -DPYTHON3_DEFAULT_VERSION=xxx <python-module>
>
> might mess up previous installations for a different python version.
>
> Cheers
> Marcus
>

Of course from ports it will work. I've told about binary packages.

When you bulk build a package for python 2.7 and python 3.3 the
/usr/local/bin/python will be included in both versions. Because bulk
building python 3 modules will requires to set PYTHON_DEFAULT_VERSION
and PYTHON3_DEFAULT_VERSION to the python 3.3 interpreter.

Then the poudriere bulk will generate python 2.7 and python 3.3
pkg-plist including for both /usr/local/bin/python and all of the
non-versioned files I've already told above.

You may now think "who cares? it build from ports". I would say no,
binary packages will be used more and more in the future.

If we install the /usr/local/bin/python symlink by testing its
presence instead of the default version the problem will be fixed.

Regards,

-- 
Demelier David


More information about the freebsd-ports mailing list