我正在尝试通过用户帐户运行 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 环境变量设置不正确,或者您的用户安装了一些本地(仅适用于该帐户)软件包,而这些软件包已经过时(旧的,不再工作)或完全损坏。在此处输入代码