对于我的python脚本,我需要更改用户。因此,我启动脚本:
sudo -u eval python3 run_aufgabe2.py
在从同一目录导入模块之前运行脚本没有问题,然后我收到导入错误:
$ Traceback (most recent call last):
$ File "run_aufgabe2.py", line 5, in <module>
$ import aufgabe2
$ ImportError: No module named 'aufgabe2'
运行没有sudo -u eval
的脚本,导入正常,脚本正在运行而没有错误。我首先考虑了权限问题,可能是用户eval
无法读取文件aufgabe2.py
,所以我更改了权限:
$ -rwxrwxrwx 1 root root 3583 Apr 12 09:08 aufgabe2.py
$ -rwxrwxrwx 1 root root 0 Apr 12 09:08 __init__.py
$ -rwxrwxrwx 1 root root 432 Apr 12 09:43 run_aufgabe2.py
但仍然是同样的错误,我想不出更多,但我确信我错过了什么。
编辑1:
我必须使用各种shell脚本来运行python脚本。
简单脚本的Bash脚本:
#!/bin/bash
cd $1
sudo -u eval python3 $2
期望动态用户输入的脚本:
#!/usr/bin/expect
cd [lindex $argv 0]
spawn sudo -u eval python3 [lindex $argv 1]
#[...]
正如@FlyingTeller在他的命令中提到的,我可以选择将当前工作目录添加到PYTHONPATH变量中。我无法运行,也许有人可以帮助我使用shell脚本。
非常感谢!
答案 0 :(得分:1)
正如@FlyingTeller所提到的,通常是你运行脚本的目录,get被添加到sys.path
。似乎sudo -u eval
以某种方式搞砸了。解决方案是手动添加路径:
import sys
sys.path.append(".")