Python conda env 在使用 sudo 时不包含本地包

Python conda env does not contain local package when using sudo

我正在使用 conda 环境和一些使用 pip install -e 安装的本地包。

有时我需要 运行 一个脚本作为 root。这样做时,我明确使用了 conda 环境,但它没有找到我的本地包。在没有 sudo 的情况下使用时,一切正常。

$ /path/to/env/bin/python -c "import my_module" --> works fine
$ sudo /path/to/env/bin/python -c "import my_module"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'my_module'

我也试过像这样持久化环境:

$ sudo -E /path/to/env/bin/python -c "import my_module"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'my_module'

设置:

Python(或您的 Anaconda)在您的计算机上几乎没有不同的环境,当以用户身份安装软件包时,它们可能安装在 ~/.local/python/... 上,而当以 root 用户身份安装时,它们安装在/var/lib/python/....

当您 运行 python 作为用户导入包时,我们会在几个地方查找,包括本地目录。
但是当 运行 python 作为 root 时,它不会在这些地方查找..

最简单的解决方案是使用 sudo 安装这些软件包,或者开始使用更推荐的 venv