Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using VirtualEnv with multiple Python versions on windows

I have python 2.7.6 and 3.4.0 on my machine. The 2.7 version is on my path. I would like to set up a virtualenv using 3.4. There are many postings on SO and elsewhere that suggest I do the following from a command prompt:

virtualenv -p c:\python34 myvirtualenv

but this does not work for me. The console session has administrator privilege and UAC is off, however I get a permissions problem:

F:\virtualenv>virtualenv -p c:\python34 myenv
Running virtualenv with interpreter c:\python34
Traceback (most recent call last):
  File "c:\python27\scripts\virtualenv-script.py", line 9, in <module>
    load_entry_point('virtualenv==1.11', 'console_scripts', 'virtualenv')()
  File "C:\Python27\lib\site-packages\virtualenv.py", line 779, in main
    popen = subprocess.Popen([interpreter, file] + sys.argv[1:], env=env)
  File "C:\Python27\lib\subprocess.py", line 709, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 957, in _execute_child
    startupinfo)
WindowsError: [Error 5] Access is denied

I have also tried it specifically pointing to the 3.4 version of virtualenv, but without changing the path it ends up executing a mixed bag of 2.7 and 3.4 python files.

The only way I could find to set up my virtual environment is to change my path to 3.4, run virtualenv then reset my path to 2.7, which defeats the point of the python switch on virtualenv.

Thanks

like image 332
marcp Avatar asked Apr 01 '14 18:04

marcp


People also ask

Can I have multiple Python versions installed on Windows?

Install multiple python versions For Windows users, I recommend using the Windows x86-64 executable installer option if you work on a 64bit system. Otherwise, just use the Windows x86 executable installer . After locating the install option for the specific version, just press the download link.


2 Answers

Better:

py -3.4 -m venv c:\path\to\wherever\you\want\it

If you don't have the py.exe launcher (but it should be installed) you can replace py -3.4 with c:\Python34\python.exe (assuming the default location)


This works because of the handy-dandy, Windows-versioningest, super nice runtime picker py.exe

By default, py.exe will be present on a Windows install (I think it comes with 2.7, I know it does with 3+). When you run py then it will search for some environment variables or you can override that with a specific verison number (in your case -2.7or -3.4) You can leave off the .4 and it will choose the "biggest" minor version number.

You can also use it to run Python scripts. If you put a hash-bang line at the top of your script #!python3 and call it py myscript.py then it will pick the correct version of Python to start with, by searching the first line of the script and searching for a version number.

This is cool, because you can put something like #!/usr/bin/env python3.4 in the top of your script and run it on Windows with py, or on linux by doing

$ chmod +x myscript.py
$ ./myscript.py

Pretty useful.

like image 167
Wayne Werner Avatar answered Sep 23 '22 00:09

Wayne Werner


Under Windows you need to run:

virtualenv -p c:\python34.exe myvirtualenv

The .exe on the end makes all the difference.

like image 24
oenpelli Avatar answered Sep 24 '22 00:09

oenpelli