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



我使用的是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'

设置:

  • Ubuntu 18.04
  • python 3.7.10

Python(在您的情况下是Anaconda(在您的计算机上有几个不同的环境,当以用户身份安装包时,它们可能安装在~/.local/python/...上,而当以root用户身份安装时,它们安装在/var/lib/python/...上。

当你以用户身份运行python并导入一个包时,我们会在几个地方查找它,包括本地目录
但是当以root身份运行python时,它不会出现在这些地方。。

最简单的解决方案是使用sudo安装这些软件包,或者开始使用强烈建议使用的venv

相关内容

  • 没有找到相关文章

最新更新