我想修改一个用于安装 python 模块(setup.sh)的 linux shell 脚本,以将文件夹添加到环境变量中。这是必需的,以便我可以从终端运行 python 模块。例如 python -m newtool.py
经过一番阅读后,我实现的方法是在 setup.sh 文件中调用 python 脚本(addmoduletopath.py)并将新的 python 模块文件夹附加到 PYTHONPATH 环境变量(使用 sys.path.append)。
这似乎将 python 模块添加到 PYTHONPATH 环境变量中。设置后,当我运行“python -m newtool.py”时,python 会找到模块路径。但是,当我使用 sudo 运行相同的命令(即 sudo python -m newtool.py)时,我收到消息“没有名为 newtool 的模块”
有任何想法吗?
顺便提一句。这是我的 addmoduletopath.py 脚本:
#!/usr/bin/env python
import sys
newtool="/opt/newtool"
if (newtool not in sys.path):
sys.path.append(newtool)
答案1
发生这种情况的原因是当您在 sudo 模式下运行时,当前的环境变量不会保留。如果您使用 -E 开关运行 sudo 命令,它将传递您的环境变量。
阅读 man sudo 了解更多细节