2014-06-05 3 views
0

새로운 setuptools 기반 설치 프로그램으로 배포 할 때 잘 설치 한 프로젝트를 변환하려고합니다. 웬일인지 나는 setuptools를 전혀 달릴 수 없다. 내 setup.py를 실행하면 에서 오류가 발생합니다. distutils에는 setuptools에서 제공하는 모든 확장 옵션 인 지원되지 않는 옵션이 있습니다. 나는 setuptools가 이것을 올바르게 돌 보지 못하는 이유를 알 수 없다. 이것은 Python 2.7을 실행하는 데비안 Wheezy 시스템에 있습니다.distribute에서 setuptools 로의 마이그레이션

문제를 설명하기 위해 간단한 테스트 케이스를 만들었습니다.

foo.py

#!/usr/bin/python 
def main(): 
    print 'Foo main() ran' 

if __name__ == '__main__': 
    main() 

setup.py

from setuptools import setup 

setup(name='foo', 
    version='1.0', 
    py_modules = ['foo'], 
    entry_points = { 
     'console_scripts': ['foo = foo:main'] # setuptools extension 
    }, 
    include_package_data = True # another setuptools extension 
) 

: 내가 실행 래퍼 스크립트와 유틸리티로 설치하려는 독립형 스크립트입니다 데비안 패키지 아카이브에있는 setuptools의 버전은 0.6.24이며 합병보다 먼저 나타납니다. 배포하고 일부 배포 유산을 유지하는 무언가를 사용하는 것을 선호합니다. 나는 pip와 함께 다양한 버전의 setuptools를 설치 해왔다. 최신 4.0.1은 대부분의 아무것도 1.4에서 3.8 작품 만 제대로 설치되지 않습니다 :

$ sudo pip install setuptools==3.8 
... 
$ python 
Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from setuptools import version 
>>> version.__version__ 
'3.8' 

setuptools에 패키지/달걀이 핍을 사용하는 경우 데비안 시스템에 정상 /usr/local/lib/python2.7/dist-packages에 배치됩니다.

$ sudo python setup.py install 
/usr/lib/python2.7/distutils/dist.py:267: 
    UserWarning: Unknown distribution option: 'entry_points' 
    warnings.warn(msg) 
/usr/lib/python2.7/distutils/dist.py:267: 
    UserWarning: Unknown distribution option: 'include_package_data' 
    warnings.warn(msg) 
running install 
running build 
running build_py 
running install_lib 
running install_egg_info 
Removing /usr/local/lib/python2.7/dist-packages/foo-1.0.egg-info 
Writing /usr/local/lib/python2.7/dist-packages/foo-1.0.egg-info 

의 distutils이 /usr/local/lib/python2.7/dist-packages/에 foo.py를 설치하지만, 분명히 setuptools에 래퍼 스크립트가없는 생성 :

나는 다음과 같은 오류를 얻을 내 setup.py로 설치하려고

. 나는 distutils가 지원하지 않는 것을 처리하기 위해 setuptools가 subclassing/monkeypatching 할 것을 기대했을 것이다.

저는 setuptools가 몇 년 전에 괴롭 히고있는 것을 기억합니다. 그래서 나는 distribute를 사용하여 정착했습니다. 그것은 여전히 ​​"그냥 작동하지 않습니다"실망입니다. 제가 빠진 것이 명백합니까? 데비안이 site-packages 대신에 dist-packages 디렉토리를 사용하는 것과 관련이 있다는 의심이 들지만 배포에는 문제가되지 않습니다.

답변

2

글쎄, 문제는 setuptools가 /usr/local/lib/...에 설치되는 것을 좋아하지 않는 것 같습니다.

sudo pip install --install-option="--prefix=/usr/lib/python2.7/dist-packages" \ 
    setuptools==3.8 

setup.py 그 후 깨끗하게 설치 :

나는 함께 /usr/lib/...로 넣어 핍 강요했다.

관련 문제