Python 가져오기는 루트에서는 작동하지만 특정 사용자에게는 작동하지 않습니다.

Python 가져오기는 루트에서는 작동하지만 특정 사용자에게는 작동하지 않습니다.

사용자 계정을 통해 Python 스크립트를 실행하려고 합니다. myuser라고 부르겠습니다. 로그인하거나 루트를 사용하지 않고도 dropbox.py 스크립트를 실행할 수 있기를 원합니다. 프로그램은 루트로 로그인하거나 루트로 로그인하면 완벽하게 실행됩니다. 하지만 먼저 루트로 로그인한 다음 부팅할 때마다 실행할 필요가 없는 방법을 찾고 싶습니다.

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 폴더에서 차이점을 확인했지만 아무것도 찾지 못했습니다.

다시 말하지만, 가장 이상한 점은 루트로는 잘 작동하지만 myuser로 로그인하면 작동하지 않는다는 것입니다. 루트는 찾기 어려운 pygtk 패키지를 가져오는 데 아무런 문제가 없습니다.

다른 사용자가 패키지를 가져올 수 있도록 어딘가에 일종의 Python 권한이나 구성을 설정해야 합니까? myuser 계정에 일부 구성 설정이 누락되어 있습니까?

감사해요!

답변1

$ sudo dnf install pygtk2.x86_64

나를 위해 작동합니다.

답변2

많은 가능성이 있는 것 같습니다. 먼저 "myuser"를 일부 관리 그룹(예: 휠 그룹)의 구성원으로 만들거나 sudoers 파일에서 필요한 권한을 부여할 수 있습니다. 두 번째 방법은 먼저 pygtk 모듈을 제공하는 필수 Python 패키지를 설치하는 것이 더 낫다고 생각합니다. 다음과 같아야 합니다.

     #sudo apt-get install python-gtk2-dev

그런 다음 프로그램을 다시 실행하십시오. 이번에는 모듈 오류가 없어야 합니다.

또는 패키지가 설치되어 있다고 확신하는 경우 Python 경로를 확인하고 myuser가 해당 패키지를 사용할 수 있고 적절한 권한이 있는지 확인해야 합니다. 가져오기 기능은 PYTHONPATH 환경에서 파일을 찾습니다. 변수와 로컬 디렉터리.

답변3

어딘가에 권한 문제가 있을 수 있습니다. 패키지가 올바르게 설치되었는지 확인하세요.

yum reinstall 《offending file》

설치를 새로 고치거나 복구해야 합니다.

다른 가능성은 Python의 en 환경 변수가 올바르게 설정되지 않았거나 사용자가 오래되었거나(오래되었거나 더 이상 작동하지 않음) 완전히 손상된 일부 로컬(해당 계정에만 해당) 패키지를 설치했기 때문일 수 있습니다. 여기에 코드를 입력하세요

관련 정보