Browse Source

Added new post.

dev
Franco Masotti 3 years ago
parent
commit
c97f379139
Signed by: frnmst
GPG Key ID: 24116ED85666780A
  1. 74
      _posts/2019-11-10-running-python-scripts-with-different-package-versions.md

74
_posts/2019-11-10-running-python-scripts-with-different-package-versions.md

@ -0,0 +1,74 @@
---
title: Running python scripts using different package versions
tags: [python, pacman, pip, venv, script, shell, bash, AUR]
updated: 2019-11-10 17:05
description: A couple of ways to prevent file conflicts on python packages and run scripts without package version problems
---
## Introduction
Installing Python packages from pacman as well as pip, using the root user,
is not a good idea because pacman cannot keep track of files
written by pip in the installation directories. File conflicts
are easy to come out.
<!--more-->
This problem stands out especially when using Python packages
installed from AUR because of their lack of maintenance. In this case
I was tempted to run ``pip3 install ${PACKAGE}``...
Have a look at [this article](https://opensource.com/article/19/4/managing-python-packages)
which is released under the Creative Commons Attribution-ShareAlike 4.0 International License
by László Kiss Kollár.
## Solutions
Just as the original article explains, I suggest two methods:
1. use the user installation method if you just need the executable
2. use the virtual environment method if you need to import a module
for a script.
The only problem of these two systems is that package updates need to be
handled manually.
### User installation method
Add the following to your shell's configuration (with GNU Bash use `~/.bashrc`):
export PATH=$HOME/.local/bin:$PATH
Reload your shell and run:
pip3 install "${PACKAGE_NAME}" --user
You can now call the executable just like you would do after
installing a package using the root user (`# pip3 install "${PACKAGE_NAME}"`)
### Virtual environment method
Install virtualenv and then create a new virtual environment:
```shell
python3 -m venv .local/venv/"${ENVIRONMENT_NAME}"
. ~/.local/venv/"${ENVIRONMENT_NAME}"/bin/activate
pip3 install ${YOUR_PACKAGES}
deactivate
```
To run a script using the newly created virtual environment
you must call the virtual interpreter directly:
~/.local/venv/"${ENVIRONMENT_NAME}"/bin/python3 "${SCRIPT_PATH}"
Finally, add the path of the virtual environment executables to
the shell's path:
export PATH=$PATH:~/.local/venv/"${ENVIRONMENT_NAME}"/bin
Reload your shell to be able to call a virtual environment executable directly.
## Conclusion
Don't mess up your Python installation and have fun :)
Loading…
Cancel
Save