python 2 and 3 modules

Marcus von Appen mva at freebsd.org
Mon Jul 29 10:26:33 UTC 2013


David Demelier <demelier.david at gmail.com>:

> 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.

I would not, either. This however is a problem with the package builder
and ports infrastructure, which would need some install hooks to allow
a check at installation time.

Cheers
Marcus



More information about the freebsd-ports mailing list