2016-10-06 10 views
2

나는 myproj라는 이름의이 프로젝트는

/myproj 
    __init__.py 
    module1.py 
    module2.py 
    setup.py 

setup.py

from distutils.core import setup 

setup(name='myproj', 
     version='0.1', 
     description='Does projecty stuff', 
     author='Me', 
     author_email='[email protected]', 
     packages=['']) 

처럼 보인다하지만이 module1.py을 배치하고 같은 구조 한 설치 디렉토리에 module2.py.


어떻게 setup 디렉토리 /myproj과의 모든 내용이 설치 디렉토리에 삭제 된 것 같은 것을 지정합니까? 이 프로젝트에 대한 myproj 루트 디렉토리에

+0

그래서 다른 사람들이'import myproj.module1'을 통해 가져 오기를 원한다고합니까? – metatoaster

+1

'setup.py'는 프로젝트 디렉토리 안에 있으면 안됩니다 .... –

+0

@metatoaster yes. – piRSquared

답변

1

, 당신은 그 아래 myproj라는 이름의 디렉토리에 module1.pymodule2.py를 이동하려면, 당신은 파이썬 < 3.3 호환성을 유지하고자하는 경우, 거기에 __init__ 평을 추가합니다.

├── myproj 
│   ├── __init__.py 
│   ├── module1.py 
│   └── module2.py 
└── setup.py 

distutils 대신 setuptools을 사용할 수도 있습니다. setuptools은이 파일을 훨씬 쉽게 설정할 수 있도록 도와주는 더 많은 방법과 추가 특성을 제공합니다. 이 같은 라인을 볼 수 설치를 실행

from setuptools import setup, find_packages 

setup(name='myproj', 
     version='0.1', 
     description="My project", 
     author='me', 
     author_email='[email protected]', 
     packages=find_packages(), 
    ) 

: 이것은 내가 위의 프로젝트를 위해 구성 할 최소한의 setup.py입니다 이것은 설치 스크립트가 필요한 소스를 집어 것을 의미

copying build/lib.linux-x86_64-2.7/myproj/__init__.py -> build/bdist.linux-x86_64/egg/myproj 
copying build/lib.linux-x86_64-2.7/myproj/module1.py -> build/bdist.linux-x86_64/egg/myproj 
copying build/lib.linux-x86_64-2.7/myproj/module2.py -> build/bdist.linux-x86_64/egg/myproj 

파일. Python 인터프리터 (바람직하게는이 프로젝트 디렉토리 외부)를 실행하여 해당 모듈을 가져올 수 있는지 확인하십시오 (상대적 가져 오기가 아닌).

반면에 루트 수준에서 모듈을 제공하려면 명시 적으로 py_modules을 선언해야합니다.

마지막으로, Python Packaging User Guide은 배포 가능한 python 패키지를 만드는 데 대해 더 구체적인 질문이있는 훌륭한 자료입니다.

+0

'setup.py'에도'packages = [ 'myproj']'가 필요합니까? – piRSquared

+0

예, 사실 대답을 수정하겠습니다. – metatoaster