On 20Dec2016 18:37, Malik Rumi <malik.a.r...@gmail.com> wrote:
I just created a new venv using pyvenv from a 2.7 install. Now I am shocked to 
see that I can get both 2.7 and 3.4 in this same venv:

(memory) malikarumi@Tetuoan2:~/Projects/cannon/New2.7Projects/memory$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
exit()
(memory) malikarumi@Tetuoan2:~/Projects/cannon/New2.7Projects/memory$ python3
Python 3.4.2 (default, Apr 17 2015, 18:47:05)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.

I did not even know this was possible. Doesn’t that defeat the purpose? More to the point, how do I make sure I am using the right one? If I want the interpreter, that’s easy. But what happens when I want to install and use a program like Django? How do I control which interpreter Django uses? I’ve been through the official docs a couple of times today, but detailed explanations of pyvenv, let alone this dual version feature, have not been found. If you can point me to a good one, please do. Meanwhile...

I suspect you're confused. What do:

 which python

and

 which python3

say? Creating a virtual env does not do anything in particular to your environment. It provides a distinct environment to work in, but you do need to take a specific action to use it.

I'd inspect sys.path in each of your pythons:

 >>> import sys
 >>> sys.path

Watch on my own Mac:

 % /opt/local/bin/python3
 Python 3.5.2 (default, Oct 11 2016, 15:01:29)
 [GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
 Type "help", "copyright", "credits" or "license" for more information.
 >>> import sys
 >>> sys.path
['', '/Users/cameron/lib/python', '/Users/cameron/rc/python', '/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python35.zip', '/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5', '/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin', '/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload', '/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages']

versus this:

 % ~/var/venv/3/bin/python3
 Python 3.5.2 (default, Oct 11 2016, 15:01:29)
 [GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
 Type "help", "copyright", "credits" or "license" for more information.
 >>> import sys
 >>> sys.path
['', '/Users/cameron/lib/python', '/Users/cameron/rc/python', '/Users/cameron/var/venv/3/lib/python35.zip', '/Users/cameron/var/venv/3/lib/python3.5', '/Users/cameron/var/venv/3/lib/python3.5/plat-darwin', '/Users/cameron/var/venv/3/lib/python3.5/lib-dynload', '/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5', '/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin', '/Users/cameron/var/venv/3/lib/python3.5/site-packages', '/Users/cameron/var/venv/3/lib/python3.5/site-packages/llfuse-1.1.1-py3.5-macosx-10.11-x86_64.egg', '/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages']

so you can see that the "native" python3 has one sys.path, and the one from my local python 3 virtualenv has a different one.

Check which pythons you're actually invoking, and what their respective sys.path values are.

Cheers,
Cameron Simpson <c...@zip.com.au>
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to