python3导入错误:使用sudo -u <user> python3运行时

时间:2018-04-12 07:55:48

标签: python linux python-3.5 sudo

对于我的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脚本。

非常感谢!

1 个答案:

答案 0 :(得分:1)

正如@FlyingTeller所提到的,通常是你运行脚本的目录,get被添加到sys.path。似乎sudo -u eval以某种方式搞砸了。解决方案是手动添加路径:

import sys
sys.path.append(".")