Python deployments: Difference between revisions
No edit summary |
Add info about using update-alternatives |
||
(4 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
Hynek Schlawack | == Check Python == | ||
Check the version of the default Python interpreter: | |||
<code>python --version</code> | |||
List the versions of python available: | |||
<code>ls /usr/bin/python*</code> | |||
Use <code>update-alternatives</code> to setup system-wide ability to choose Python interpreter. The one with the '''higher''' priority number will become the default.<br> | |||
<code>update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1</code><br> | |||
<code>update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2</code> | |||
Now we can list the choices: | |||
<code>update-alternatives --list python</code> | |||
And choose one: | |||
<code>update-alternatives --config python</code> | |||
We can also remove a choice if it's no longer an option on the system: | |||
<code>update-alternatives --remove python /usr/bin/python2.7</code> | |||
== Python Virtual Environments == | |||
See Digital Ocean's quick guide to [https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-local-programming-environment-on-ubuntu-16-04 setting up a local Python programming environment], including [https://virtualenv.pypa.io/en/stable/ virtual environments], which is what I did for [https://github.com/Miserlou/SoundScrape SoundScrape] Btw, SoundScrape is a neat tool to download sound files from SoundCloud. | |||
<ref> | |||
<source lang="bash"> | |||
cd | |||
mkdir environments | |||
cd environments/ | |||
pyvenv my_env | |||
source my_env/bin/activate | |||
pip install --upgrade pip | |||
pip install soundscrape | |||
pip install soundscrape --upgrade | |||
soundscrape https://soundcloud.com/pianoman_weddings/coldplay | |||
</source> | |||
</ref> | |||
Hynek Schlawack (from 2013) | |||
* [https://hynek.me/talks/python-deployments/ Notes] | * [https://hynek.me/talks/python-deployments/ Notes] | ||
* [https://www.youtube.com/watch?v=RvbDCzroavY Video] | * [https://www.youtube.com/watch?v=RvbDCzroavY Video] | ||
== Python Packaging == | == Python Packaging == | ||
In the old days (2015) there were still debates about how to package Python and install stuff. Now, it's settled. Use pip. Easy_install is dead. See the [https://docs.python.org/3/installing/index.html docs]. Also note that <code>venv</code> is the successor to <code>virtualenv</code> | |||
https:// | |||
== Basic PIP and Virtual Environments == | |||
Do NOT (normally) use sudo with pip. Use a virtual environment. As of Python 3.4, the command is now called <code>pyvenv</code> or simply <code>venv</code>. As of Python 3.6 <code>pyvenv</code> is '''deprecated''' in favor of using <code>python3 -m venv</cod> to help prevent any potential confusion as to which Python interpreter a vritual environment will be based on. | |||
<source lang="bash"> | |||
$ python3 -m venv myenv | |||
.. some output .. | |||
$ source myenv/bin/activate | |||
(myenv) $ pip install what-i-want | |||
# done using this python? | |||
deactivate | |||
</source> | |||
You only use sudo or elevated permissions when you want to install stuff for the global, system-wide Python installation. | |||
It is best to use a virtual environment which isolates packages for you. That way you can play around without polluting the global python install. | |||
As a bonus, virtualenv does not need elevated permissions. | |||
* Installing a package is as simple as <code>pip install foo</code> | |||
* Upgrades are <code>pip install --upgrade foo</code> | |||
* <code>pip uninstall foo</code> if you want to remove foo | |||
{{References}} | |||
[[Category:Python]] | [[Category:Python]] |
Revision as of 07:40, 7 October 2020
Check Python
Check the version of the default Python interpreter:
python --version
List the versions of python available:
ls /usr/bin/python*
Use update-alternatives
to setup system-wide ability to choose Python interpreter. The one with the higher priority number will become the default.
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2
Now we can list the choices:
update-alternatives --list python
And choose one:
update-alternatives --config python
We can also remove a choice if it's no longer an option on the system:
update-alternatives --remove python /usr/bin/python2.7
Python Virtual Environments
See Digital Ocean's quick guide to setting up a local Python programming environment, including virtual environments, which is what I did for SoundScrape Btw, SoundScrape is a neat tool to download sound files from SoundCloud. [1]
Hynek Schlawack (from 2013)
Python Packaging
In the old days (2015) there were still debates about how to package Python and install stuff. Now, it's settled. Use pip. Easy_install is dead. See the docs. Also note that venv
is the successor to virtualenv
Basic PIP and Virtual Environments
Do NOT (normally) use sudo with pip. Use a virtual environment. As of Python 3.4, the command is now called pyvenv
or simply venv
. As of Python 3.6 pyvenv
is deprecated in favor of using python3 -m venv</cod> to help prevent any potential confusion as to which Python interpreter a vritual environment will be based on.
$ python3 -m venv myenv
.. some output ..
$ source myenv/bin/activate
(myenv) $ pip install what-i-want
# done using this python?
deactivate
You only use sudo or elevated permissions when you want to install stuff for the global, system-wide Python installation.
It is best to use a virtual environment which isolates packages for you. That way you can play around without polluting the global python install.
As a bonus, virtualenv does not need elevated permissions.
- Installing a package is as simple as
pip install foo
- Upgrades are
pip install --upgrade foo
pip uninstall foo
if you want to remove foo
References
- ↑
cd
mkdir environments
cd environments/
pyvenv my_env
source my_env/bin/activate
pip install --upgrade pip
pip install soundscrape
pip install soundscrape --upgrade
soundscrape https://soundcloud.com/pianoman_weddings/coldplay