tri*_*sct 3 python bash sudo 20.04
我正在使用 ubuntu 20.04 编写 python 程序。我通常安装没有sudo前缀的 python 包。但我注意到,如果我进入 sudo 模式,然后尝试导入以前安装的 python 包,它会引发ModuleNotFoundError: No module named 'xxx'. 但如果我退出 sudo 模式,一切都会恢复正常。
可能是什么原因?难道是因为在 sudo 模式下导入路径没有添加到PATH变量中?PATH但如果你检查下面我的变量,这似乎不是原因:
普通用户模式:
/usr/local/cuda-10.2/bin:/home/myusername/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Run Code Online (Sandbox Code Playgroud)
根模式:
/usr/local/cuda-10.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:
Run Code Online (Sandbox Code Playgroud)
Python 不使用PATH环境变量。确定在哪里寻找模块的过程相当复杂,这里不再赘述,但最终所有路径都包含在变量中sys.path。使用以下单行代码打印该列表:
python3 -c "import sys; print(sys.path)"
Run Code Online (Sandbox Code Playgroud)
(请注意,它仅包含现有目录。)
在输出中,您将在主文件夹中看到一个文件夹。这是您用户的 site-packages 目录,这是PEP 370中描述的功能。pip3如果您使用“普通”用户运行它,那么这就是默认安装软件包的目录。
如果您现在切换到该用户,python 将在用户的主文件夹(即 )root中查找模块,因此它不会在“普通”用户的 site-packages 目录中找到包。root/root
出于开发目的,我建议使用虚拟环境,例如venv.
| 归档时间: |
|
| 查看次数: |
21951 次 |
| 最近记录: |