使用 nix 正确设置全局 python 环境

Setup global python environment properly with nix

通过在 Mac 上使用 nix 而不是 brew,我逐渐熟悉了它。到目前为止我非常喜欢它,但是 python 环境存在问题。我不知道如何正确配置它。

我正在使用 powerline status,它本身是一个 python 包,但也可以作为派生包 (nixpkgs.python37Packages.powerline) 使用。所以,我将它与 python 和其他一些软件包一起安装:

# file: python.nix
with import <nixpkgs> {};
python3.withPackages (ps: with ps; [ pip pipenv powerline ipython ])

这是按预期工作的。

但是,我还使用了一些额外的电力线段(例如 powerline-gitstatus),这些段不能作为派生。所以,我只是通过 pip install --user ... 安装了它们。然后设置PYTHONPATH=$HOME/.local/lib/python3.7/site-packages.

这也有效。

除此之外,我还需要 awscli,它是一个 python 包,可作为独立派生版本使用(不是 nixpkgs.python37Packages.awscli),所以我无法将其安装为据我所知,我的习惯 python 推导的一部分。

我试图用 nix-env -i awscli 得到它,但它不能与集合 PYTHONPATH 一起使用。

我尝试用 pip install --user awscli 获取它,但它也没有用。

在这两种情况下,由于缺少依赖项或版本不兼容,它都崩溃了。

所以,我的问题是:如何使用 nix 正确设置全局 python 环境?

我想遵循 well-documented 非常方便的方法对您的情况也有帮助。

How to consume python modules using pip in a virtualenv like I am used to on other Operating Systems ?

10.09.2020 更新:
Developing Python with Poetry & Poetry2nix: Reproducible flexible Python environments 描述了另一个使用 python 在 NixOS 上工作的方法。