So, >From my admittedly brief web searches, I found multiple online references to the fact that, by design, both virtualenv and venv are designed to 'jail' a particular python version as the default. Unfortunately, this means there aren't any arguments that allow either of these approaches to simultaneously support both python2&3.
A hack: if you really want to maintain both versions with the convention that python will invoke python2 and python3 will invoke python3 then you can do: ------------- python3 -m venv python3_venv rm python3_venv/bin/python . ./python3_venv/bin/activate ------------- This results in python resolving to the host version, typically, /usr/bin/python aka python2. python3 will resolve to python3_venv/bin/python3. pip will resolve to the python3 pip. Since we will need to have modules installed for python3 for toaster, this is what we want. I tried some pip installs of both compiled modules and pure python modules and these were correctly installed as python3 modules. In this environment if you want to install a python2 modules, pip2 install <foo> will do that. Since I don't know what side effects this might have, suggesting this as a "solution" seems silly. However, I wanted to put this out there since it did work for me in case someone is stuck... Unfortunately, this doesn't really solve what we do for toaster... -bavery On Tue, May 31, 2016 at 7:09 AM, Christopher Larson <[email protected]> wrote: > > > On Tue, May 31, 2016 at 3:45 AM, Richard Purdie > <[email protected]> wrote: >> >> The move to python3 is unsurprisingly causing some issues in places. >> One of them is unfortunately the use of vritualenv, which as I >> understand it, toaster currently promotes as its preferred way of being >> run. >> >> The issue is that we need "python" to be python v2 but "python3" to be >> python v3. It seems with virtualenv you can either have python v2 or >> python v3 but not both. >> >> The python developers official party line is that "python" is v2 and >> "python3" is v3. There are some distros choosing not to do this (e.g. >> Arch Linux) but most are following the official recommendation and I >> think OE needs to follow the official recommendation too. Its likely OE >> will need to error with sanity test failures if the environment doesn't >> conform to this view of the world. >> >> Why do we need this? We have a mixture of code, some of it is ported to >> v3, some isn't. Whilst we're aiming to convert all of "our" code to >> python v3, even once we've done that, we can't easily change scripts >> that ship with the source code we build for example, or expect everyone >> to do that for all software they build. >> >> It may be virtualenv can be configured to not take over "python" but >> only "python3" but Ed/I haven't found the option, I'm no expert. >> >> The other alternative is to promote the use of something like "pip3 >> install 'Django>1.8,<1.9' --user" instead. Toaster doesn't need many >> modules and those it does need should be installable into the user's >> homedir using pip3. >> >> Whilst this means changing the documentation and taking a new approach, >> I think its the "least bad" solution we have right now. >> >> Obviously I'm open to other ideas but we really do need a way which >> allows mixed versions of python and virtualenv doesn't seem to work for >> this. > > > virtualenv is the wrong tool to use for python 3. python 3 includes its own > tool for managing virtual environments, pyvenv. See > https://docs.python.org/dev/library/venv.html. > > As an FYI, you can run either virtualenv or pyvenv for an arbitrary python > version by running it with python -m virtualenv or python -m venv, and > virtualenv takes a -p argument to specify the path to the python executable. > But of course that doesn't matter, since we don't need to use virtualenv in > python 3 environments. But still, useful to know that both python packages > provide an __main__. > -- > Christopher Larson > clarson at kergoth dot com > Founder - BitBake, OpenEmbedded, OpenZaurus > Maintainer - Tslib > Senior Software Engineer, Mentor Graphics > > -- > _______________________________________________ > toaster mailing list > [email protected] > https://lists.yoctoproject.org/listinfo/toaster > -- _______________________________________________ toaster mailing list [email protected] https://lists.yoctoproject.org/listinfo/toaster
