Pythonのインポートはrootでは機能しますが、特定のユーザーには機能しません。

Pythonのインポートはrootでは機能しますが、特定のユーザーには機能しません。

ユーザーアカウントでPythonスクリプトを実行しようとしています。 myuserと呼びます。ログインしたり root を使わなくても dropbox.py スクリプトを実行できるようにしたいです。プログラムは root としてログインするか、root としてログインすると完全に実行されます。しかし、まず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、おおよそ次のように1行ずつ取得します。

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

両方のプロファイルの .bashrc、.bash_profiles、.bash_history ファイルに違いはありません。また、.configフォルダで違いを確認しましたが、何も見つかりませんでした。

繰り返しますが、最も奇妙なことは、rootではうまく機能しますが、myuserとしてログインしても機能しないことです。ルートは見つけるのが難しいpygtkパッケージをインポートすることに問題はありません。

他のユーザーがパッケージをインポートできるように、ある種のPython権限または設定をどこかに設定する必要がありますか? myuserアカウントにいくつかの構成設定がありませんか?

ありがとうございます!

答え1

$ sudo dnf install pygtk2.x86_64

私のために動作します。

答え2

多くの可能性があるようです。まず、「myuser」を一部の管理グループ(ホイールグループなど)のメンバーにするか、sudoersファイルで必要な権限を付与できます。 2番目の方法は、まずpygtkモジュールを提供する必要なPythonパッケージをインストールする方が良いと思います。次のようにする必要があります。

     #sudo apt-get install python-gtk2-dev

その後、プログラムを再実行してください。今回はモジュールエラーがあってはなりません。

または、パッケージがインストールされていると確信している場合は、Pythonパスを確認し、myuserがそのパッケージを使用でき、適切な権限を持っていることを確認する必要があります。インポート機能はPYTHONPATH環境でファイルを検索します。変数とローカルディレクトリ。

答え3

どこかに権限の問題がある可能性があります。パッケージが正しくインストールされていることを確認してください。

yum reinstall 《offending file》

インストールを更新または修復する必要があります。

他の可能性は、Pythonのen環境変数が正しく設定されていないか、ユーザーが古い(古い、または機能しなくなった)完全に破損したローカル(該当するアカウントのみ)パッケージをインストールしたためです。ここにコードを入力してください

関連情報