2

I'm using Ubuntu system with python 3.5 installed by default.

When I use the venv module to create virtual environment, I can't find the standard library in my virtual environment but only the binary file for python interpreter. However I can import standard library modules in my python script when I switch to use this virtual environment.

So how does venv work? Does the newly created virtual environment just use the standard library of the system python? If so, what if I want to create a completely self-contained virtual environment? Is it possible to achieve this by the venv module? By the way, I used conda before. conda can create virtual environment with python different with the system version. Can venv do this job?

Gödel
  • 592
  • 4
  • 21
  • 1
    `import sys; print(sys.path)` this will show where python is looking for all the modules. You will always get pythons standard modules but you may or may not have access to the installed system modules - that's part of the config of the virtual environment. – AChampion Aug 24 '17 at 05:10
  • @AChampion Yes the virtual environment created by `venv` looks standard library module in the global system python installation. I think it is strange for `venv` to behave this way. – Gödel Aug 24 '17 at 05:55

1 Answers1

6

It's because venv uses the systems standard library. it will be a problem if you update actual Python because version mismatch can happen there. Take a look at the following link you will get more information.
https://virtualenv.pypa.io/en/stable/

Max
  • 1,283
  • 9
  • 20
  • So, within the virtual environment, we have a standalone python interpreter and standalone site-package, but a standard library dependent on system python. Right? – Gödel Aug 24 '17 at 05:42
  • yes, exactly. so, if you update your Python, then your code developed in virtual env might face version issue – Max Aug 24 '17 at 05:44
  • 3
    I agree with you. I think it is strange to create a virtual environment like this. Why doesn't `venv` just create a standalone standard library within the virtual environment to avoid the potential version issue? Maybe the development team has a special consideration for the behavior of `venv` module? – Gödel Aug 24 '17 at 05:49