You can find GitHub repository in https://github.com/python-projects-kenanhancer/python_demo
- Pyenv – Python Runtime Version Manager
- Pipenv – Python Package Manager and Virtual environment manager
- Venv – Virtual environment manager
- Virtualenv – Virtual environment manager
Installing Python Runtime Versions via Pyenv
In order to test different Python Runtime versions, I have installed some versions.
$ pyenv install 3.10.2
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.10.2.tar.xz...
-> https://www.python.org/ftp/python/3.10.2/Python-3.10.2.tar.xz
Installing Python-3.10.2...
python-build: use tcl-tk from homebrew
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.10.2 to /Users/kenanhancer/.pyenv/versions/3.10.2
I have 4 Python runtime versions(3.10.2
, 3.10.3
, 3.10.4
, 3.10.5
) in my machine.
$ pyenv versions
system
3.10.2
3.10.3
3.10.4
* 3.10.5 (set by /Users/kenanhancer/.pyenv/version)
Creating a new project
$ mkdir python_demo1
$ cd python_demo1
$ pyenv local 3.10.2
$ pyenv version
3.10.2 (set by /Users/kenanhancer/Documents/projects/python_demo1/.python-version)
$ python -m pip list
Package Version
---------- -------
pip 21.2.4
setuptools 58.1.0
WARNING: You are using pip version 21.2.4; however, version 22.2 is available.
You should consider upgrading via the '/Users/kenanhancer/.pyenv/versions/3.10.2/bin/python -m pip install --upgrade pip' command.
$ python -m pip install --upgrade pip
Requirement already satisfied: pip in /Users/kenanhancer/.pyenv/versions/3.10.2/lib/python3.10/site-packages (21.2.4)
Collecting pip
Using cached pip-22.2-py3-none-any.whl (2.0 MB)
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 21.2.4
Uninstalling pip-21.2.4:
Successfully uninstalled pip-21.2.4
Successfully installed pip-22.2
$ python -m pip list
Package Version
---------- -------
pip 22.2
setuptools 58.1.0
Creating virtual environment via Pipenv
$ python -m pip install pipenv
Collecting pipenv
Downloading pipenv-2022.7.24-py2.py3-none-any.whl (3.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.7/3.7 MB 12.3 MB/s eta 0:00:00
Requirement already satisfied: setuptools>=36.2.1 in /Users/kenanhancer/.pyenv/versions/3.10.2/lib/python3.10/site-packages (from pipenv) (58.1.0)
Collecting virtualenv-clone>=0.2.5
Using cached virtualenv_clone-0.5.7-py3-none-any.whl (6.6 kB)
Requirement already satisfied: pip>=22.0.4 in /Users/kenanhancer/.pyenv/versions/3.10.2/lib/python3.10/site-packages (from pipenv) (22.2)
Collecting virtualenv
Using cached virtualenv-20.15.1-py2.py3-none-any.whl (10.1 MB)
Collecting certifi
Using cached certifi-2022.6.15-py3-none-any.whl (160 kB)
Collecting platformdirs<3,>=2
Using cached platformdirs-2.5.2-py3-none-any.whl (14 kB)
Collecting six<2,>=1.9.0
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting distlib<1,>=0.3.1
Using cached distlib-0.3.5-py2.py3-none-any.whl (466 kB)
Collecting filelock<4,>=3.2
Using cached filelock-3.7.1-py3-none-any.whl (10 kB)
Installing collected packages: distlib, virtualenv-clone, six, platformdirs, filelock, certifi, virtualenv, pipenv
Successfully installed certifi-2022.6.15 distlib-0.3.5 filelock-3.7.1 pipenv-2022.7.24 platformdirs-2.5.2 six-1.16.0 virtualenv-20.15.1 virtualenv-clone-0.5.7
$ python -m pip list
Package Version
---------------- ---------
certifi 2022.6.15
distlib 0.3.5
filelock 3.7.1
pip 22.2
pipenv 2022.7.24
platformdirs 2.5.2
setuptools 58.1.0
six 1.16.0
virtualenv 20.15.1
virtualenv-clone 0.5.7
pipenv help

$ python -m pipenv install --three
Creating a virtualenv for this project...
Pipfile: /Users/kenanhancer/Documents/projects/python_demo1/Pipfile
Using /Users/kenanhancer/.pyenv/versions/3.10.5/bin/python3 (3.10.5) to create virtualenv...
⠹ Creating virtual environment...created virtual environment CPython3.10.5.final.0-64 in 166ms
creator CPython3Posix(dest=/Users/kenanhancer/.local/share/virtualenvs/python_demo1-hPpiqctY, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/kenanhancer/Library/Application Support/virtualenv)
added seed packages: pip==22.1.2, setuptools==62.6.0, wheel==0.37.1
activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
✔ Successfully created virtual environment!
Virtualenv location: /Users/kenanhancer/.local/share/virtualenvs/python_demo1-hPpiqctY
Creating a Pipfile for this project...
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Updated Pipfile.lock (e4eef2)!
Installing dependencies from Pipfile.lock (e4eef2)...
? ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
$ tree -a
.
├── .python-version
├── Pipfile
└── Pipfile.lock
0 directories, 3 files
.python-version
file is created by pyenvPipfile
and Pipfile.lock
are created by pipenv
3.10.3
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
[dev-packages]
[requires]
python_version = "3.10"
{
"_meta": {
"hash": {
"sha256": "fedbd2ab7afd84cf16f128af0619749267b62277b4cb6989ef16d4bef6e4eef2"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.10"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {},
"develop": {}
}
$ pipenv install requests
Installing requests...
Adding requests to Pipfile's [packages]...
✔ Installation Succeeded
Installing dependencies from Pipfile.lock (d1a991)...
? ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
As shown in the following Piffle, requests package is added in [packages] section (in line 7)
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
requests = "*"
[dev-packages]
[requires]
python_version = "3.10"
$ pipenv graph
requests==2.28.1
- certifi [required: >=2017.4.17, installed: 2022.6.15]
- charset-normalizer [required: >=2,<3, installed: 2.1.0]
- idna [required: >=2.5,<4, installed: 3.3]
- urllib3 [required: >=1.21.1,<1.27, installed: 1.26.11]
$ kenanhancer@MacBook-Air python_demo1 % python -m pipenv shell
Launching subshell in virtual environment...
. /Users/kenanhancer/.local/share/virtualenvs/python_demo1-hPpiqctY/bin/activate
kenanhancer@MacBook-Air python_demo1 % . /Users/kenanhancer/.local/share/virtualenvs/python_demo1-hPpiqctY/bin/activate
$ (python_demo1) kenanhancer@MacBook-Air python_demo1 %
After activating pipenv shell, requests
Python package is listed as well. So, we can list installed packages after activating pipenv shell or run pipenv graph
without activating shell.
$ (python_demo1) kenanhancer@MacBook-Air python_demo1 % pip list
Package Version
------------------ ---------
certifi 2022.6.15
charset-normalizer 2.1.0
idna 3.3
pip 22.1.2
requests 2.28.1
setuptools 63.2.0
urllib3 1.26.11
wheel 0.37.1
$ (python_demo1) kenanhancer@MacBook-Air python_demo1 % python -c "
import requests
#the required first parameter of the 'get' method is the 'url':
x = requests.get('https://w3schools.com/python/demopage.htm')
#print the response text (the content of the requested file):
print(x.text)
"
<!DOCTYPE html>
<html>
<body>
<h1>This is a Test Page</h1>
</body>
</html>
I install jq
package to format JSON output.
$ (python_demo1) kenanhancer@MacBook-Air python_demo1 % python -c "
import requests
# Making a GET request
response = requests.get('https://api.github.com/users/kenanhancer')
# print content of request
print(response.text)" | jq
{
"login": "kenanhancer",
"id": 1851856,
"node_id": "MDQ6VXNlcjE4NTE4NTY=",
"avatar_url": "https://avatars.githubusercontent.com/u/1851856?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/kenanhancer",
"html_url": "https://github.com/kenanhancer",
"followers_url": "https://api.github.com/users/kenanhancer/followers",
"following_url": "https://api.github.com/users/kenanhancer/following{/other_user}",
"gists_url": "https://api.github.com/users/kenanhancer/gists{/gist_id}",
"starred_url": "https://api.github.com/users/kenanhancer/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/kenanhancer/subscriptions",
"organizations_url": "https://api.github.com/users/kenanhancer/orgs",
"repos_url": "https://api.github.com/users/kenanhancer/repos",
"events_url": "https://api.github.com/users/kenanhancer/events{/privacy}",
"received_events_url": "https://api.github.com/users/kenanhancer/received_events",
"type": "User",
"site_admin": false,
"name": "kenan hancer",
"company": "Lloyds Banking Group",
"blog": "http://www.kenanhancer.com",
"location": "United Kingdom",
"email": null,
"hireable": true,
"bio": null,
"twitter_username": null,
"public_repos": 49,
"public_gists": 38,
"followers": 16,
"following": 1,
"created_at": "2012-06-14T21:04:20Z",
"updated_at": "2022-07-24T08:21:49Z"
}
