[arch-general] An archlinux-python package for managing system default python version?

fabien boitier fabien.boitier at gmail.com
Fri Jan 23 20:24:51 UTC 2015

On 23/01/15 at 09:51pm, Chi Hsuan Yen wrote:
> Dear Arch enthusiasts,
> The package extra/java-runtime-common provides a convenient script
> archlinux-java to handle co-existing JDK/JRE versions. I can use it to
> switch between different versions of java implementations to accomplish
> numerous tasks from testing the compatibilities of my programs to running
> third party applications targeting on different platforms. Now I hope
> there's also a simple script for the same thing but for python. On the
> system, most of the scripts are written for python2 and some other scripts
> are python3-specific. In most cases it's not a problem because I can fix
> the scripts or use some tricks like $PATH to ensure the correct execution
> of the programs. However, in large projects, doing either is time-consuming
> and costly. Recently I'm building CyanogenMod on Arch Linux. It includes
> lots of python scripts in the build system, and most of them requires
> python2. Using the tip provided on the article about Python on ArchWiki
> prevents lots of problems, but, however, some scripts have the shebang line
> "#!/usr/bin/env python" or are invoked by some command like
> "/usr/bin/python ...". I have to change the link /usr/bin/python to
> pointing to python2 for further progress on building and changed it back
> for my daily use. If there's an archlinux-python script, lots of time on
> battling the difference between python2 and python3 does not exist anymore,
> which I believe lots of users can benefit from it. Any ideas?
> Best Regards,
> Yen Chi Hsuan


As I understand, you find a workaround thanks to Borja but I wander why nobody
talked about Python VirtualEnv[1] (I thought it was created for such case). In
your case (where you want to change python env just for building cyanogen then
come back to python3), you can  install "python-virtualenvwrapper" from repo
then the first time you need to create the virtual env : 

$source /usr/bin/virtualenvwrapper.sh
$mkvirtualenv -p `which python2` cyanogen
$workon cyanogen  

and next time you just need to source the wrapper and change the env: 

$source /usr/bin/virtualenvwrapper.sh
$workon cyanogen  

You can find more accurate details in [1] on the ArchWiki.

Best regard, 

[1] https://wiki.archlinux.org/index.php/Python_VirtualEnv

More information about the arch-general mailing list