python3导入错误: while running with sudo -u <user> python3

标签 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 脚本。

非常感谢!

最佳答案

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

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

关于python3导入错误: while running with sudo -u <user> python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49790960/

相关文章:

linux - 如何使用linux命令删除文件中字符串中的特殊字符

linux - Puppet - 通过其他模块 list 安装模块

linux - 按日期选择性删除目录的脚本

python - 使用 aiohttp.ClientSession() 发出请求时如何为 aiohttp.client 设置日志记录?

python - 如何连接两个数据框并保留每个数据框的某些列?

python - 如何在带有繁忙指示器的 QProgressBar 上显示文本?

Python摆脱字节b''

python - 如何找到属于非方阵零空间的线性无关向量? (Python)

django - 扩展 django 用户 django-rest_framework 给我 KeyError

python-3.5 - 将 dask 系列转换为 dask 数据框