在 GNU/Linux 上,PYTHONPATH 不适用于 sudo(适用于 root)
- 2024-11-04 08:42:00
- admin 原创
- 35
问题描述:
编辑:适用于 root,但 sudo 是问题所在。请阅读下文。
我有一个包含我自己的库的目录,例如我的 Python 库位于/home/name/lib/py
。
我已通过向 添加以下行将此目录添加到所有用户(包括 root)的 Python PATH/etc/bash.bashrc
中:
export PYTHONPATH=$PYTHONPATH:/home/name/lib/py
它适用于所有用户(包括 root)。但它不适用于 sudo。有什么方法可以让 sudo 使用/etc/bash.bashrc
吗?
编辑:更多信息:
我已将PYTHONPATH
以下内容添加到 sudoers 文件中:Defaults env_keep += "HOME PYTHONPATH"
。但它仍然不起作用。
env | grep PYTHON:
PYTHONDONTWRITEBYTECODE=1
PYTHONPATH=/home/name/lib/py
sudo env | grep PYTHON:
PYTHONDONTWRITEBYTECODE=1
sudo echo $PYTHONPATH:
/home/name/lib/py
解决方案 1:
对于变量来说也是如此PATH
,即使您传递了保留环境标志,它也不会被带入超级用户环境-E
。
我现在使用这个 sudo 命令,无需任何其他修改:
sudo -HE env PATH=$PATH PYTHONPATH=$PYTHONPATH ./bin/myscript
因为对我来说这是一种有效的替代方法所以我想在这里分享。
解决方案 2:
对我来说,解决方法是从 sudoers 中删除Defaults !env_reset
。
但是,我必须保留Defaults env_keep += "PYTHONPATH"
sudoers。
我实际上已经添加了Defaults env_reset
(这会重置环境变量),但由于 ,它仍然有效env_keep
。
看起来env_keep
和!env_reset
互相冲突,但这只是猜测。
所以,整个过程:
添加
export PYTHONPATH=/your/custom/path
至~/.bashrc
或/etc/bash.bashrc
PYTHONPATH
在Defaults env_keep += "ENV1 ENV2 ..."
sudoers 文件中添加Defaults !env_reset
如果存在,则从 sudoers 文件中删除
解决方案 3:
操纵的替代方案PYTHONPATH
:
虚拟环境
分布式实用程序
解决方案 4:
另一个提示:
sudo echo $PYTHONPATH:
/home/name/lib/py
它不会起作用。 Shell 将按如下方式解释它:
1)从环境变量扩展 $PYTHONPATH 例如:/usr/lib/python
2)执行“sudo echo /usr/lib/python”
解决方案 5:
这可能应该发布在其他地方。但是 sudo 默认不会处理环境文件。如果您想调用它,-i 标志应该会帮助您。它将模拟用户初始登录。
您可能还需要尝试放置变量的位置。http ://linux.die.net/man/8/sudo
解决方案 6:
遵循配置可以帮助我在一个 Centos 主机上的专用 VENV 中运行多个 python 服务
将环境变量导出到单独的文件,例如
/etc/sysconfig/my-app
在服务配置中设置
EnvironmentFile
选项
参见下面的代码:
-bash-4.2$ sudo vi /etc/sysconfig/my-app
PATH=/usr/local/my-app/env/bin:$PATH
LD_LIBRARY_PATH=/usr/local/my-app/env/lib:$LD_LIBRARY_PATH
-bash-4.2$ sudo vi /etc/systemd/system/my-app.service
[Unit]
Description=my-app daemon
After=network.target
[Service]
EnvironmentFile=/etc/sysconfig/my_app
User=app_user
Group=app_user
Type=simple
ExecStart=/usr/local/my-app/env/bin/python /usr/local/my-app/main.py
Restart=on-failure
RestartSec=5s
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件