2013-08-26 5 views
1

나는 적절한 파이썬 설치 스크립트를 만드는 데 큰 문제가 있습니다. 내 폴더 구조는 다음과 같습니다.올바른 파이썬 설치 스크립트 설정

my_project/ 
    my_project/ 
     --__init__.py 
     --file_1.py 
     --file_2.py 
     --file_3.py 
    -AUTHORS 
    -CHANGELOG 
    -INSTALL 
    -LICENSE 
    -README.rst 
    -setup.cfg 
    -setup.py 

설치 스크립트를 만들었지 만 원하는대로 작동하지 않습니다. 설정 스크립트 :이 후

from ez_setup import use_setuptools 
use_setuptools() 
import os 
import sys 
from setuptools import setup, find_packages 
readme_file = os.path.join(os.path.dirname(__file__), 'README.rst') 
try: 
    long_description = open(readme_file).read() 
except IOError, err: 
    sys.stderr.write("[ERROR] Cannot find file specified as ""``long_description`` (%s)\n" % readme_file) 
    sys.exit(1) 
setup(
    name = 'my_project', 
    version='0.0.1', 
    author = 'AUTHOR', 
    author_email = 'CONTACT', 
    url = 'http://example.com', 
    description= 'Some description', 
    long_description = long_description, 
    packages = find_packages('my_project'), 
    package_dir = {'':'my_project'}, 
     package_data = {'':['*.py']}, 
    include_package_data = True, 
    scripts = [], 
    requires = [], 
    license = 'BSD License', 
    install_requires = [ 
     'some_packages', 
    ], 
    classifiers = [ 
     'Development Status :: 2 - Pre-Alpha', 
     'Environment :: Web Environment', 
     'Intended Audience :: Developers', 
     'License :: OSI Approved :: BSD License', 
     'Operating System :: OS Independent', 
     'Programming Language :: Python', 
     'Programming Language :: Python :: 2.6', 
     'Programming Language :: Python :: 2.7', 
     'Topic :: Database', 
     'Topic :: Internet', 
     'Topic :: Software Development :: Libraries :: Python Modules', 
    ], 
    keywords = 'python, setup, script, the best', 
) 

:

sudo python setup.py alias release register sdist bdist_egg upload 
sudo python setup.py release 

모든이 시점까지 괜찮지 만, 내가하려고하면

sudo pip install my_project 

I는/usr/지방에서 얻을 /lib/python2.7/dist-packages/ my_project-0.0.1.egg-info /라는 폴더이지만 , file_1, file_2, file_3 파이썬 파일이있는 my_project는 없습니다.

my_project-0.0.1.egg-info /는 필수 사항이지만 파일은 어디에 있습니까? 효과 없음으로

sudo python setup.py install 

을하지만,이 시간이 나는 폴더 my_project-0.0.1-py2.7.egg을 가지고 :

는 그럼 난 노력했다.

내가 /usr/local/lib/python2.7/dist-packages/이 디렉토리에 싶어

:

- my_project-0.0.1.egg-info/ 
- my_project with my files 

내 질문 :

  1. 내가 뭘 잘못입니까?
  2. 어떻게 해결할 수 있습니까?
  3. 어쩌면 내가 도와 줄 수있는 setuptools 대신 distutils를 사용하려고합니까?
+0

먼저,'ez_setup'을 현대적인'setuptools' (post-'배포판'merge)와 함께 사용하고 싶지 않을 것입니다. 어떤 버전이 있습니까? 처음 두 줄만 제거하면 해봤습니까? – abarnert

답변

1

귀하의 문제는이 라인에 : 당신은 my_project 있음을 이야기하고

package_dir = {'':'my_project'}, 

최상위 패키지를 찾을 수있는 장소입니다. 따라서 find_packages('my_project')은 최상위 디렉토리 (my_project) 안의 패키지를 my_project/my_project으로 찾으려고합니다. 그런 것이 없으므로 빈 패키지로 끝납니다.

해당 행을 제거하면 모든 것이 작동합니다.


조금 지나치게 복잡해집니다. ez_setup에서 아무것도 사용하지 않으므로 첫 번째 두 줄을 제거하는 것이 더 간단합니다. 그리고 하나의 정적 패키지를 추가하는 것일 뿐이므로 실제로 find_packages을 사용할 이유가 없습니다. 대신 packages = ['my_project']을 사용할 수 있습니다.


한편, 향후에 스스로 디버깅하는 방법은 다음과 같습니다.

먼저 실제로 작동 할 때까지 sudo python setup.py alias release register sdist bdist_egg upload을 시도하지 마십시오.이미 PyPI에 업로드 한 파일보다 로컬 파일을 디버그하는 것이 훨씬 쉽습니다. python setup.py sdist을 실행 한 다음, 결과로 나온 tarball을보고 정상적으로 보이는지 확인한 다음 pip install . 및/또는 pip install dist/my_project-0.0.1.tar.gz을 시도하여 실제로 작동하는지 확인하십시오.

두 번째로 setup.py은 일반적인 파이썬 코드입니다. 무슨 일이 일어나고 있는지를 항상 로그 할 수 있습니다. 예를 들어 find_packages('my_project')이 제대로 작동하지 않는 것 같으면 setup(…) 앞에 print(find_packages('my_project'))을 사용해보십시오.