Created
November 17, 2022 18:28
-
-
Save stuzenz/cc11f5ef5b7f029773cbd9e806348c3e to your computer and use it in GitHub Desktop.
python virtual env with nix-shell
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
with import <nixpkgs> { }; | |
let | |
pythonPackages = python3Packages; | |
in pkgs.mkShell rec { | |
name = "impurePythonEnv"; | |
venvDir = "./.venv"; | |
buildInputs = [ | |
# A Python interpreter including the 'venv' module is required to bootstrap | |
# the environment. | |
pythonPackages.python | |
# This execute some shell code to initialize a venv in $venvDir before | |
# dropping into the shell | |
pythonPackages.venvShellHook | |
# Those are dependencies that we would like to use from nixpkgs, which will | |
# add them to PYTHONPATH and thus make them accessible from within the venv. | |
pythonPackages.numpy | |
pythonPackages.requests | |
python39Packages.jupyterlab | |
python39Packages.pandas | |
python39Packages.matplotlib | |
python39Packages.librosa | |
ffmpeg | |
# audio library | |
python39Packages.pydub | |
# In this particular example, in order to compile any binary extensions they may | |
# require, the Python modules listed in the hypothetical requirements.txt need | |
# the following packages to be installed locally: | |
taglib | |
openssl | |
git | |
libxml2 | |
libxslt | |
libzip | |
zlib | |
]; | |
# Run this command, only after creating the virtual environment | |
postVenvCreation = '' | |
unset SOURCE_DATE_EPOCH | |
pip install -r requirements.txt | |
''; | |
# Now we can execute any commands within the virtual environment. | |
# This is optional and can be left out to run pip manually. | |
postShellHook = '' | |
# allow pip to install wheels | |
unset SOURCE_DATE_EPOCH | |
''; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment