2013-10-03 8 views
2
/project 
../project/script.py 
../project/__init__.py (This is a blank File) 
setup.py 
other files like README. 

#script.py 
def function1(): 
    print "hi" 

def main(): 
    function1() 

if __name__ == '__main__': 
    main() 


#setup.py 
setup(
name='project', 
version= __version__, 
long_description=markdown_contents, 
packages=['project'], 
entry_points={ 
    'console_scripts': [ 'project=project:main'] 
    } 
) 

필자는 설치 및 설치 작업을 할 수 있습니다. 하지만 일단 패키지가 설치되면 프로젝트를 실행할 때 초기화 _.pyc '>'기본 '속성이 없습니다.
프로젝트 명령을 실행할 때 script.py의 main에서 함수를 실행하기 만하면됩니다. 상자. 내가 도대체 ​​뭘 잘못하고있는 겁니까 ?설치 지점의 진입 점

답변

3

기본 프로젝트 패키지에는 실제로 main 속성이 없습니다. project:main의 의미는 project 모듈에서 main을 가져오고 __init__.py에는 해당 개체가 없습니다.

대신 project.script:function1을 참조하십시오. 그 객체 이 존재합니다. 필요에 따라

def function1(): 
    print "hi" 

def main(): 
    function1() 

if __name__ == '__main__': 
    main() 

지금 당신이 main()에 더 추가 할 수 있습니다

모범 사례는 main() 기능을 정의하고 진입 점으로 그것을 사용하는 것입니다.

script 모듈을 setuptools에서 생성 한 스크립트로 가져 오면 __name__ == '__main__' 테스트는 항상 false이됩니다. 파일은 직접 실행되지 않습니다.

+0

__name__ == '__main__'인 경우 일련의 함수가있는 경우 어떻게해야합니까? 순서대로 모두 실행하고 싶습니다. 답장을 보내 주셔서 감사합니다. –

+0

@script_kiddie :'__main__' 테스트는 객체가 아닙니다. 별도의 함수'main()'을 정의하고 호출하십시오. –

+0

여전히 __init __을 제공합니다. pyc '>에는'main '속성이 없습니다. . 수정 된 코드를 확인하십시오. –

1
'console_scripts': [ 'project=project.project:main']