Installing a port to a specific python version

Gerhard Schmidt schmidt at ze.tum.de
Thu Feb 1 15:54:30 UTC 2018


Am 01.02.2018 um 16:10 schrieb Roland Smith:
> 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.

portupgrade seams not to support this right now. pkg displays it. But
pkg has it's own set of problems renders it practical impossible to use.

 portupgrade -fvvb py36-virtualenv
--->  Session started at: Thu, 01 Feb 2018 16:49:02 +0100
[Reading data from pkg(8) ... - 959 packages found - done]
** Detected a package name change: py36-virtualenv (devel/py-virtualenv)
-> 'py27-virtualenv' (devel/py-virtualenv)
--->  Reinstallation of devel/py-virtualenv started at: Thu, 01 Feb 2018
16:49:05 +0100
--->  Reinstalling 'py36-virtualenv-15.1.0' (devel/py-virtualenv)
--->  Build of devel/py-virtualenv started at: Thu, 01 Feb 2018 16:49:05
+0100
--->  Building '/usr/ports/devel/py-virtualenv'
===>  Cleaning for py27-virtualenv-15.1.0
===>  Cleaning for py36-virtualenv-15.1.0
===>  License MIT accepted by the user
===>   py27-virtualenv-15.1.0 depends on file: /usr/local/sbin/pkg - found
===> Fetching all distfiles required by py27-virtualenv-15.1.0 for building
===>  Extracting for py27-virtualenv-15.1.0
=> SHA256 Checksum OK for pypa-virtualenv-15.1.0_GH0.tar.gz.
===>  Patching for py27-virtualenv-15.1.0
copy/convert test suite
===>   py27-virtualenv-15.1.0 depends on package: py27-setuptools>0 - found
===>   py27-virtualenv-15.1.0 depends on file: /usr/local/bin/python2.7
- found
===>  Configuring for py27-virtualenv-15.1.0

seams i have to do the updating of any python package by hand. Not much
fun with 200+ FreeBSD Systems with differing python installations.

Whould anybody be so kind to explain to me why this has to be changed.
Loved working with FreeBSD and python for the last 15 Years. Never had
any issues with the PYTHON_VERSION approach. And portupgrade did work
with updating python3.6 packages while python2.7 was default.

Regards
   Estartu



-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 858 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-python/attachments/20180201/b04129d9/attachment.sig>


More information about the freebsd-python mailing list