Python 导入对 root 有效,但对特定用户无效

Python 导入对 root 有效,但对特定用户无效

我正在尝试通过用户帐户运行 python 脚本,将其称为 myuser。我希望能够在不登录或su'ing root 的情况下执行dropbox.py 脚本。当我以 root 身份登录或 su 到 root 时,该程序可以完美运行,但我想找到一种方法,不必先 su 到 root,然后在每次启动时运行它。

当我以 myuser 身份运行它时,出现以下错误:

[myuser@localhost Utilities]$ python dropbox.py start
Starting Dropbox...
The Dropbox daemon is not installed!
Run "dropbox start -i" to install the daemon

因此,我按照建议使用 -i 选项运行它,并得到以下结果:

[myuser@localhost Utilities]$ python dropbox.py start -i
Starting Dropbox...Traceback (most recent call last):
  File "dropbox.py", line 1404, in start
    download()
  File "dropbox.py", line 280, in download
    import pygtk
ImportError: No module named pygtk

我运行它strace,得到一行又一行,大致如下所示:

open("/home/myuser/Downloads/pygtk.so", O_RDONLY) = -1 ENOENT (No such file or directory)

任一配置文件的 .bashrc、.bash_profiles、.bash_history 文件没有差异。我还检查了 .config 文件夹是否存在差异,但没有发现任何差异。

同样,最奇怪的事情是它作为 root 可以正常工作,但当以 myuser 身份登录时却不起作用。 root 在难以捉摸的 pygtk 包中导入完全没有问题。

我是否需要在某处设置某种 python 权限或配置以允许其他用户导入包? myuser 帐户中是否缺少某种配置设置?

谢谢!

答案1

$ sudo dnf install pygtk2.x86_64

为我工作。

答案2

似乎有很多可能性。首先,您可以尝试使“myuser”成为某些管理组(例如wheel组)的成员,或者您可以在sudoers文件中授予它所需的权限。我认为第二种方式更适合首先安装提供 pygtk 模块的所需 python 包,它应该是这样的:

     #sudo apt-get install python-gtk2-dev

然后再次运行程序,这次应该不会出现模块错误了。

或者,如果您确定该软件包已安装,那么您应该检查 python 路径并确保 myuser 可以使用它并具有适当的权限。函数 import 会在 PYTHONPATH 环境中查找文件。变量和您的本地目录。

答案3

可能是某个地方的权限问题。检查软件包是否正确安装,例如

yum reinstall 《offending file》

应该刷新/修复安装。

其他可能性是 Python 的 en 环境变量设置不正确,或者您的用户安装了一些本地(仅适用于该帐户)软件包,而这些软件包已经过时(旧的,不再工作)或完全损坏。在此处输入代码

相关内容