2011-01-05 3 views
2

파이썬에 익숙하며 난수 생성기를 사용하려고합니다. 그러나 임의 모듈을 가져 오는 데 문제가 있습니다. 난 무작위 모듈에서 아무것도 사용하려고하면 AttributeError가 발생합니다. 당신의 도움을 주셔서 감사합니다.파이썬에서 모듈 가져 오기 및 사용하기

#!/usr/bin/python -tt 

import random 

def main(): 
    x = random.randint(1,1000) 
    print x 

if __name__ == '__main__': 
    main() 
+4

정확한 오류 란 무엇인가요? 이 코드는 괜찮습니다. – user225312

+0

난수 생성기에 관한 질문이 아니기 때문에 [난수 생성기]가 제거되었습니다. 모듈 가져 오기에 관한 것입니다. 주요 에, 파일 "./random.py", 10 행, "./random.py" 주() 파일, 라인 6 : 역 추적 (마지막으로 가장 최근 통화) : 여기 – aaronasterling

+0

오류입니다 x = random.randint (1,1000) AttributeError : 'module'객체에 'randint'속성이 없습니다. –

답변

9

아마도 현재 디렉토리에 random.py (또는 pyc)라는 파일이 있습니다. 당신이 사용하고있는 임의 모듈은 이렇게 어디에서 오는지 당신은 찾을 수 있습니다 :

import random 
print(random.__file__) 
+0

FWIW, 분명히 Windows 컴퓨터에서 일부 상황에서 전체 경로를 제공하지 않습니다. – aaronasterling

+0

역 추적 (마지막으로 가장 최근 통화) : 파일 "./anothername.py", 10 행, 주() 파일 "./anothername.py"에서, 6 행, 주요 X = random.randint에서 (1,1000) AttributeError : 'module'객체에 'randint'속성이 없습니다. –

+1

@ Empty Monty : 제안 된 코드를 모듈에 넣으십시오. 인쇄 내용을 확인하십시오. 대부분 random.pyc 파일을 삭제하는 것을 잊었을 가능성이 큽니다. –

2

좋아, 그것은 다른 무언가로 random.py 이름으로 파이썬 프로그램의 이름을 모릅니다. 통역사가 모듈과 프로그램에 혼란을 느끼고 있습니다.

3

파이썬 가져 오기 시스템은 다음과 같이 막연하게 작동합니다.

  1. import foo과 같은 행이 실행됩니다.
  2. 파이썬은 sys.path에있는 디렉토리를 순서대로 나열합니다. sys.path의 첫 번째 항목은 주 파일이있는 디렉토리입니다.
  3. 파이썬이 "foo.py"라는 파일을 찾으면 파일을 실행하고 그 파일의 글로벌 네임 스페이스를 모듈 sys.modules['foo']에 넣습니다.
  4. 파이썬은 해당 모듈을 원래 가져 오기가 발생하는 범위에있는 foo 이름으로 바인딩합니다.

그래서 random.py 파일의 이름을 지정하면 python은 표준 라이브러리의 파일을 검색하기 전에 해당 파일을 찾습니다. 파일로 random 모듈을 "섀도 잉"하고 있습니다.

이것은 단순화되어 전체 그림을 제공하지는 않습니다. 예를 들어, .pyc 파일을 무시합니다.

+0

자세한 답변을 보내 주셔서 감사합니다. 이것은 모두 의미가 있습니다. –

0

나는이 게시물을 읽고 같은 문제를 해결했습니다. 나는 randomkit이라는 파일을 가지고있다 대문자로 파일 이름을 시작하는 것이 더 좋지 않으므로 파이썬 모듈과 일치하지 않는다. 왜냐하면 나처럼 루키는 많은 파이썬 모듈에 익숙하지 않기 때문이다. 감사합니다.

관련 문제