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