Installing a port to a specific python version

Roland Smith rsmith at xs4all.nl
Thu Feb 1 15:11:31 UTC 2018


On Wed, Jan 31, 2018 at 08:00:55AM +0100, Gerhard Schmidt wrote:
> Hi
> 
> I'm having a small problem with python and FreeBSD. I'm a python
> developer. I Maintain some legacy code written in python2.7 and some new
> projects in Python 3.6 and for testing purposes i need python 3.4 and
> 3.5. So I need all this versions of python on my system, at least to be
> able to create virtual envs.
> 
> Installing the python interpreters is not a problem, but installing
> python packages.
> 
> How can in say a port it shouldn't use the default version stated in
> make.conf but a specific version. I don't want to change the default
> version every time i install a Port.
> 
> I've tried to set PYTHON_VERSION as environment variable.
> I've tried to give PYTHON_VERSION as parameter to make.
> I've tried to give PYTHON as parameter to make.
> I've tried python3.5 python35 3.5 and 35 with each of them, it still
> installed the default python version.
> 
> Then i tried make PYTHON_DEFAULT=3.5 and get a error message.

Python ports work with "flavors" now. See the entries for 20171130 in
/usr/ports/UPDATING.

Use it like this::

    cd /usr/ports/<foo>
    make FLAVOR=py36 install clean

If you always want a specific version of a port, you can put the following in
/etc/make.conf::

    .if ${.CURDIR:M*/devel/ipython}
    FLAVOR=py36
    .endif

If you always want to build ports for all supported versions of Python, use
the following in /etc/make.conf::

    BUILD_ALL_PYTHON_FLAVORS=true

You *might* be able to restrict that to a specific package, like this::

    .if ${.CURDIR:M*/www/py-requests}
    BUILD_ALL_PYTHON_FLAVORS=true
    .endif

According to the docs, `pkg` supports flavors. But I can't find anything in
the manpage.


Hope this helps,

Roland
-- 
R.F.Smith                                   http://rsmith.home.xs4all.nl/
[plain text email much appreciated]


More information about the freebsd-python mailing list