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'
设置:
- Ubuntu 18.04
- python 3.7.10
Python(或您的 Anaconda)在您的计算机上几乎没有不同的环境,当以用户身份安装软件包时,它们可能安装在 ~/.local/python/...
上,而当以 root 用户身份安装时,它们安装在/var/lib/python/...
.
当您 运行 python 作为用户导入包时,我们会在几个地方查找,包括本地目录。
但是当 运行 python 作为 root 时,它不会在这些地方查找..
最简单的解决方案是使用 sudo
安装这些软件包,或者开始使用更推荐的 venv
。
我正在使用 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 作为用户导入包时,我们会在几个地方查找,包括本地目录。
但是当 运行 python 作为 root 时,它不会在这些地方查找..
最简单的解决方案是使用 sudo
安装这些软件包,或者开始使用更推荐的 venv
。