2012-11-07 2 views
2

Windows에서 setuptools (버전 0.6c11)를 사용하고 있으며 진입 점 console_scripts을 통해 설치할 콘솔 스크립트를 지정합니다. 그것은 리눅스에서 잘 작동하지만 MinGW 컴파일러를 사용하는 Windows에서는 스크립트가 설치되지 않습니다. 설치 출력에 알 수없는 메시지가 표시되지 않습니다.console_scripts 엔트리 포인트가 무시 되었습니까?

ipython과 같은 다른 패키지는 setup.py install을 실행 한 후 잘 작동하며 .exe 파일을 가지고 있습니다.

누군가 디버깅 할 방법을 제안 할 수 있습니까?

import setuptools 
setup(
    # ... 
    entry_points={ 
     'console_scripts':[ 
      'myprog = myMod:main' 
     ] 
    } 
) 

UPDATE : 인 Vinay로 인한 사례를 바탕으로

, 내가 문제를 분리 할 수 ​​있었다 (감사합니다!) : 모듈이 중첩 된 하위 디렉토리에 설치되어있는 경우, 스크립트가 생성되지 않습니다

import setuptools, os.path, shutil 

SOURCE = ''' 
def main(): 
    print('Hello, world!') 
''' 

### ERROR: when level of subdir is > 1, script is not created 
subdir='subdir/subdir2' 

### OK: with single-level subdirectory, everything works just fine 
# subdir='subdir' 

def prepare(): 
    # remove previous source 
    if os.path.exists('subdir'): shutil.rmtree('subdir') 
    # create subdirs as necessary 
    os.makedirs(subdir) 
    with open(subdir+'/my_mod.py', 'w') as f: f.write(SOURCE) 

prepare() 

setuptools.setup(
    name = 'myprog', 
    version = '0.1', 
    url = 'http://dummy.com/', 
    author = 'Me', 
    author_email = '[email protected]', 
    py_modules=['my_mod'], 
    package_dir={'':subdir}, 
    entry_points={ 
     'console_scripts':['myprog = my_mod:main'] 
    }, 
    zip_safe=False 
) 

나는 package_dir에 대해 오해하고 있습니까?

+0

귀하의 반대 사례에 대한 응답으로 업데이트를 추가했습니다. –

+0

두 번째 메모에 대한 응답으로 : "/"Windows에서 유효한 디렉터리 구분 기호 때문에 "버그"말할 것이라고하지만 누가 버그를 알고 있습니다? 아마도 그것은'distribute'에 대해 로그되어야합니다 (아직 없다면). –

+0

@VinaySajip : 나는 어디에서 발생하는지 알아 내려고 노력할 것이다. 나는'package_dir'가'/'(패키지 발견 등)와 잘 동작하기 때문에보고해야한다는 것에 동의한다. 그것은 실패한 스크립트 생성 일 뿐이다. – eudoxos

답변

2

음, 이것은 나를 위해 작동 :

# This file is setup.py 
import setuptools 

SOURCE = ''' 
def main(): 
    print('Hello, world!') 
''' 

def prepare(): 
    with open('my_mod.py', 'w') as f: 
     f.write(SOURCE) 

prepare() 

setuptools.setup(
    name = 'woo', 
    version = '0.1', 
    url = 'http://dummy.com/', 
    author = 'Me', 
    author_email = '[email protected]', 
    py_modules=['my_mod'], 
    entry_points={ 
     'console_scripts':['myprog = my_mod:main'] 
    } 
) 

나는 VIRTUALENV에서 실행할 때

(venv) C:\temp\exemplar>python setup.py install 
running install 
running bdist_egg 
running egg_info 
writing woo.egg-info\PKG-INFO 
writing top-level names to woo.egg-info\top_level.txt 
writing dependency_links to woo.egg-info\dependency_links.txt 
writing entry points to woo.egg-info\entry_points.txt 
reading manifest file 'woo.egg-info\SOURCES.txt' 
writing manifest file 'woo.egg-info\SOURCES.txt' 
installing library code to build\bdist.win32\egg 
running install_lib 
running build_py 
creating build 
creating build\lib 
copying my_mod.py -> build\lib 
creating build\bdist.win32 
creating build\bdist.win32\egg 
copying build\lib\my_mod.py -> build\bdist.win32\egg 
byte-compiling build\bdist.win32\egg\my_mod.py to my_mod.pyc 
creating build\bdist.win32\egg\EGG-INFO 
copying woo.egg-info\PKG-INFO -> build\bdist.win32\egg\EGG-INFO 
copying woo.egg-info\SOURCES.txt -> build\bdist.win32\egg\EGG-INFO 
copying woo.egg-info\dependency_links.txt -> build\bdist.win32\egg\EGG-INFO 
copying woo.egg-info\entry_points.txt -> build\bdist.win32\egg\EGG-INFO 
copying woo.egg-info\top_level.txt -> build\bdist.win32\egg\EGG-INFO 
zip_safe flag not set; analyzing archive contents... 
creating 'dist\woo-0.1-py2.7.egg' and adding 'build\bdist.win32\egg' to it 
removing 'build\bdist.win32\egg' (and everything under it) 
Processing woo-0.1-py2.7.egg 
creating c:\temp\venv\lib\site-packages\woo-0.1-py2.7.egg 
Extracting woo-0.1-py2.7.egg to c:\temp\venv\lib\site-packages 
Adding woo 0.1 to easy-install.pth file 
Installing myprog-script.py script to C:\temp\venv\Scripts 
Installing myprog.exe script to C:\temp\venv\Scripts 

Installed c:\temp\venv\lib\site-packages\woo-0.1-py2.7.egg 
Processing dependencies for woo==0.1 
Finished processing dependencies for woo==0.1 

(venv) C:\temp\exemplar>pip uninstall woo 
Uninstalling woo: 
    c:\temp\venv\lib\site-packages\woo-0.1-py2.7.egg 
    c:\temp\venv\scripts\myprog-script.py 
    c:\temp\venv\scripts\myprog.exe 
Proceed (y/n)? y 
    Successfully uninstalled woo 

(venv) C:\temp\exemplar> 

업데이트 :

귀하의 문제를 올바른 경로 구분 기호를 사용하지 않는 : 사용

subdir = 'subdir \\ sub dir2 '

나를 위해 일했습니다. 물론 os.path.join()을 사용해야합니다.

+0

고마워요. 나는 소스 계층 구조에서 my_mod가 어디에 있는지에 따라 스크립트가 설치되어 있는지 여부에 관계없이 반례를 추가했다. – eudoxos

+0

쿨! 그 점을 알려 주셔서 감사합니다. 버그 또는 기능입니까? – eudoxos