Table of Contents

Python Virtual Environment

venv Module

<Code:none> Required Debian Package: ii python3.11-venv 3.11.2-6 amd64 Interactive high-level object-oriented language (pyvenv binary, version 3.11)

srohr@pluto:~/Projects/Python$ mkdir project1 srohr@pluto:~/Projects/Python$ python3 -m venv ./project1/venv srohr@pluto:~/Projects/Python$ source cd project1 srohr@pluto:~/Projects/Python/project1$ source ./venv/bin/activate

(venv) srohr@pluto:~/Projects/Python/project1$ pip list Package Version ———- ——- pip 23.0.1 setuptools 66.1.1

(venv) srohr@pluto:~/Projects/Python/project1$ pip freeze

(venv) srohr@pluto:~/Projects/Python/project1$ pip freeze –local

(venv) srohr@pluto:~/Projects/Python/project1$ pip install flask Collecting flask

Downloading flask-3.0.0-py3-none-any.whl (99 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 99.7/99.7 kB 2.1 MB/s eta 0:00:00

Collecting Werkzeug>=3.0.0

Downloading werkzeug-3.0.1-py3-none-any.whl (226 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 226.7/226.7 kB 7.4 MB/s eta 0:00:00

Collecting Jinja2>=3.1.2

Downloading Jinja2-3.1.2-py3-none-any.whl (133 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.1/133.1 kB 5.3 MB/s eta 0:00:00

Collecting itsdangerous>=2.1.2

Downloading itsdangerous-2.1.2-py3-none-any.whl (15 kB)

Collecting click>=8.1.3

Downloading click-8.1.7-py3-none-any.whl (97 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 97.9/97.9 kB 5.2 MB/s eta 0:00:00

Collecting blinker>=1.6.2

Downloading blinker-1.7.0-py3-none-any.whl (13 kB)

Collecting MarkupSafe>=2.0

Downloading MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (28 kB)

Installing collected packages: MarkupSafe, itsdangerous, click, blinker, Werkzeug, Jinja2, flask Successfully installed Jinja2-3.1.2 MarkupSafe-2.1.3 Werkzeug-3.0.1 blinker-1.7.0 click-8.1.7 flask-3.0.0 itsdangerous-2.1.2

(venv) srohr@pluto:~/Projects/Python/project1$ pip freeze blinker==1.7.0 click==8.1.7 Flask==3.0.0 itsdangerous==2.1.2 Jinja2==3.1.2 MarkupSafe==2.1.3 Werkzeug==3.0.1

(venv) srohr@pluto:~/Projects/Python/project1$

(venv) srohr@pluto:~/Projects/Python/project1$ pip freeze > ../requirements.txt

(venv) srohr@pluto:~/Projects/Python/project1$ cat ../requirements.txt blinker==1.7.0 click==8.1.7 Flask==3.0.0 itsdangerous==2.1.2 Jinja2==3.1.2 MarkupSafe==2.1.3 Werkzeug==3.0.1

(venv) srohr@pluto:~/Projects/Python/project1$ deactivate srohr@pluto:~/Projects/Python/project1$

</Code>

requirements.txt can be a simple file with all the modules listed <Code:none> blinker click Flask itsdangerous Jinja2 MarkupSafe Werkzeug </Code>

It is also possible to download exact versions of a module or a range of versions <Code:none> blinker>=1.6.0,<1.6.5 click==8.1.7 Flask>=3.0.0 </Code>

The requirements.txt file can be used to install all the packages listed in the file within a new environment. <Code:none> srohr@pluto:~/Projects/Python$ mkdir project2 srohr@pluto:~/Projects/Python$ python3 -m venv ./project2/venv srohr@pluto:~/Projects/Python$ source ./project2/venv/bin/activate (venv) srohr@pluto:~/Projects/Python$ pip install -r ./project1/venv/ bin/ include/ lib/ lib64/ pyvenv.cfg (venv) srohr@pluto:~/Projects/Python$ #pip install -r ../requirements.txt (venv) srohr@pluto:~/Projects/Python$ pip freeze (venv) srohr@pluto:~/Projects/Python$ pip list Package Version ———- ——- pip 23.0.1 setuptools 66.1.1 (venv) srohr@pluto:~/Projects/Python$ pip install -r ../requirements.txt Collecting blinker==1.7.0

Using cached blinker-1.7.0-py3-none-any.whl (13 kB)

Collecting click==8.1.7

Using cached click-8.1.7-py3-none-any.whl (97 kB)

Collecting Flask==3.0.0

Using cached flask-3.0.0-py3-none-any.whl (99 kB)

Collecting itsdangerous==2.1.2

Using cached itsdangerous-2.1.2-py3-none-any.whl (15 kB)

Collecting Jinja2==3.1.2

Using cached Jinja2-3.1.2-py3-none-any.whl (133 kB)

Collecting MarkupSafe==2.1.3

Using cached MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (28 kB)

Collecting Werkzeug==3.0.1

Using cached werkzeug-3.0.1-py3-none-any.whl (226 kB)

Installing collected packages: MarkupSafe, itsdangerous, click, blinker, Werkzeug, Jinja2, Flask Successfully installed Flask-3.0.0 Jinja2-3.1.2 MarkupSafe-2.1.3 Werkzeug-3.0.1 blinker-1.7.0 click-8.1.7 itsdangerous-2.1.2 (venv) srohr@pluto:~/Projects/Python$ pip list Package Version ———— ——- blinker 1.7.0 click 8.1.7 Flask 3.0.0 itsdangerous 2.1.2 Jinja2 3.1.2 MarkupSafe 2.1.3 pip 23.0.1 setuptools 66.1.1 Werkzeug 3.0.1 (venv) srohr@pluto:~/Projects/Python$ pip freeze blinker==1.7.0 click==8.1.7 Flask==3.0.0 itsdangerous==2.1.2 Jinja2==3.1.2 MarkupSafe==2.1.3 Werkzeug==3.0.1 (venv) srohr@pluto:~/Projects/Python$ </Code>

<Code:none> srohr@pluto:~/Projects/Python$ mkdir project3 srohr@pluto:~/Projects/Python$ python3 -m venv ./project3/venv –system-site-packages srohr@pluto:~/Projects/Python$ cd project3/ srohr@pluto:~/Projects/Python/project3$ source venv/bin/activate (venv) srohr@pluto:~/Projects/Python/project3$ pip list Package Version —————— ———- anyio 3.6.2 attrs 22.2.0 blinker 1.5 Brlapi 0.8.4 certifi 2022.9.24 chardet 5.1.0 charset-normalizer 3.0.1 click 8.1.3 colorama 0.4.6 crit 3.17.1 cryptography 38.0.4 cupshelpers 1.0 dbus-python 1.3.2 distlib 0.3.6 distro 1.8.0 distro-info 1.5 dnspython 2.3.0 docker 5.0.3 docker-compose 1.29.2 dockerpty 0.4.1 docopt 0.6.2 feedparser 6.0.10 filelock 3.9.0 fuse-python 1.0.5 GDAL 3.6.2 gpg 1.18.0 h11 0.14.0 h2 4.1.0 hpack 4.0.0 httpcore 0.16.3 httplib2 0.20.4 httpx 0.23.3 hyperframe 6.0.0 idna 3.3 jsonpointer 2.3 jsonschema 4.10.3 lazr.restfulclient 0.14.5 lazr.uri 1.0.6 louis 3.24.0 Mako 1.2.4.dev0 Markdown 3.4.1 markdown-it-py 2.1.0 MarkupSafe 2.1.2 mdurl 0.1.2 musicbrainzngs 0.7.1 mutagen 1.46.0 numpy 1.24.2 oauthlib 3.2.2 pip 23.0.1 platformdirs 2.6.0 protobuf 4.21.12 pycairo 1.20.1 pycups 2.0.1 pycurl 7.45.2 Pygments 2.14.0 PyGObject 3.42.2 pyinotify 0.9.6 PyJWT 2.6.0 pylibacl 0.7.0 pyparsing 3.0.9 PyQt5 5.15.9 PyQt5-sip 12.11.1 pyrsistent 0.18.1 PySimpleSOAP 1.16.2 pysmbc 1.0.23 python-apt 2.6.0 python-dateutil 2.8.2 python-debian 0.1.49 python-debianbts 4.0.1 python-dotenv 0.21.0 pyxattr 0.8.1 pyxdg 0.28 PyYAML 6.0 quodlibet 4.5.0 reportbug 12.0.0 requests 2.28.1 requests-toolbelt 0.10.1 rfc3986 1.5.0 rfc3987 1.3.8 rich 13.3.1 setuptools 66.1.1 sgmllib3k 1.0.0 six 1.16.0 sniffio 1.2.0 texttable 1.6.7 tornado 6.2 uritemplate 4.1.1 urllib3 1.26.12 virtualenv 20.17.1+ds wadllib 1.3.6 webcolors 1.11.1 websocket-client 1.2.3 wheel 0.38.4 xdg 5 (venv) srohr@pluto:~/Projects/Python/project3$ pip freeze anyio==3.6.2 attrs==22.2.0 blinker==1.5 Brlapi==0.8.4 certifi==2022.9.24 chardet==5.1.0 charset-normalizer==3.0.1 click==8.1.3 colorama==0.4.6 crit==3.17.1 cryptography==38.0.4 cupshelpers==1.0 dbus-python==1.3.2 distlib==0.3.6 distro==1.8.0 distro-info==1.5 dnspython==2.3.0 docker==5.0.3 docker-compose==1.29.2 dockerpty==0.4.1 docopt==0.6.2 feedparser==6.0.10 filelock==3.9.0 fuse-python==1.0.5 GDAL==3.6.2 gpg==1.18.0 h11==0.14.0 h2==4.1.0 hpack==4.0.0 httpcore==0.16.3 httplib2==0.20.4 httpx==0.23.3 hyperframe==6.0.0 idna==3.3 jsonpointer==2.3 jsonschema==4.10.3 lazr.restfulclient==0.14.5 lazr.uri==1.0.6 louis==3.24.0 Mako==1.2.4.dev0 Markdown==3.4.1 markdown-it-py==2.1.0 MarkupSafe==2.1.2 mdurl==0.1.2 musicbrainzngs==0.7.1 mutagen==1.46.0 numpy==1.24.2 oauthlib==3.2.2 platformdirs==2.6.0 protobuf==4.21.12 pycairo==1.20.1 pycups==2.0.1 pycurl==7.45.2 Pygments==2.14.0 PyGObject==3.42.2 pyinotify==0.9.6 PyJWT==2.6.0 pylibacl==0.7.0 pyparsing==3.0.9 PyQt5==5.15.9 PyQt5-sip==12.11.1 pyrsistent==0.18.1 PySimpleSOAP==1.16.2 pysmbc==1.0.23 python-apt==2.6.0 python-dateutil==2.8.2 python-debian==0.1.49 python-debianbts==4.0.1 python-dotenv==0.21.0 pyxattr==0.8.1 pyxdg==0.28 PyYAML==6.0 quodlibet==4.5.0 reportbug==12.0.0 requests==2.28.1 requests-toolbelt==0.10.1 rfc3986==1.5.0 rfc3987==1.3.8 rich==13.3.1 sgmllib3k==1.0.0 six==1.16.0 sniffio==1.2.0 texttable==1.6.7 tornado==6.2 uritemplate==4.1.1 urllib3==1.26.12 virtualenv==20.17.1+ds wadllib==1.3.6 webcolors==1.11.1 websocket-client==1.2.3 xdg==5 (venv) srohr@pluto:~/Projects/Python/project3$ </Code>

virtualenv Module