소스 코드 구성 방법은 프로젝트마다 다릅니다. 내 경험의 년에서 가장 좋은 가장 pythonic 방법은 항상 setup.py
있습니다.
이 경우 pip install -e .
으로 만들 수 있으며 디렉토리의 editable version은 virtualenv에 가상으로 설치됩니다. 실제로 설치되지는 않았지만 "링크 됨": .pth
파일로 소스 코드 디렉토리가 sys.path
에 추가되므로 나중에 특별한 복사/설치 단계없이 &을 편집 할 수 있습니다.
자세한 내용은 setup.py
을 으로 확장 할 수 있습니다. 개발 목적으로 설치하고 pip install -e .[dev]
으로 설치하십시오. 환상적인 결과와 더 비슷합니다.
나머지는 스크립트의 특성에 따라 다릅니다. 스크립트가 응용 프로그램의 일부인 경우
, 그들은 entry-points in setup.py
를 통해 설치해야합니다. 이 경우
# setup.py:
setup(
entry_points={
'console_scripts': [
'tool1 = mytools.tool1:main',
'tool2 = mytools.tool2:main',
],
},
)
는
pip install -e .
후, 그들은 VIRTUALENV의
bin
폴더되거나,
/usr/local/bin
또는 모두에서 시스템 파이썬 사용되는 경우. 그들이 설치 한 어떤의 VIRTUALENV을 충분히 인식하고
source .venv/bin/activate
tool1 ...
# OR:
~/path/to/venv/bin/tool2
스크립트는이 방법으로 설치, 그래서 활성화 및 명시적인 파이썬 바이너리는 필요하지 않습니다 :이처럼 그들을 실행할 수 있습니다.응용 프로그램의
스크립트 코드의 유지 보수를 위해 경우
, 그리고 의미 론적 부분은, 그들은 일반적으로 상단 (#!/usr/bin/env python
)에서 오두막으로, ./scripts/
디렉토리 (또는 다른, 예를 들어, ./ci/
)에 투입된다. 예, tool1.py
:
#!/usr/bin/env python
def main():
pass
if __name__ == '__main__':
main()
다음과 같이 인해 오두막 현재 VIRTUALENV에서 실행 : 진입 점을 통해 설치 스크립트와는 달리
source .venv/bin/activate
./scripts/tool1.py ...
# OR:
~/path/to/venv/bin/python ./scripts/tool1.py
,이 스크립트에서 자신의 VIRTUALENV 모르는 어떤 방식 으로든, virtualenv는 활성화되거나 적절한 파이썬이 명시 적으로 사용되어야합니다.
이 방법은 스크립트가 비 파이썬이 아닌 경우에도 사용됩니다. bash 스크립트 용. 배포가 예측 & 지속 될 수 있도록 두 경우 모두
는 requirements.txt
파일 때로는 핀 (pip freeze
포함) 응용 프로그램의 & 의존성 '버전으로 사용된다. 그러나 이것은 또 다른 이야기입니다. 응용 프로그램의 배포에 관한 것이고, 패키징에 대한 내용은 아니며 & 유지 관리입니다.
requirements.txt
파일은 setup.py
의 새로운 고정 해제 된 (즉, 유연한) 요구 사항과 새로운 패키지 버전을 충족시키기 위해 수시로 재생성됩니다. 하지만 일반적으로 생성 된 콘텐츠 (repo에서 커밋 되었음에도 불구하고)가 아닌 손으로 유지 관리되는 콘텐츠입니다.
당신은 엄격하게 한 후, 어떤 이유로 setup.py
이 중 수정 된 ENV var에와 그 스크립트를 실행하지 않으려면 :
PYTHONPATH=. python scripts/tool1.py
또는 sys.path
내부에서 해킹 :
# tools1.py
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
을
정확하게 이것은 pip install -e .
이 수행하는 것입니다. 모든 호출에서 수작업으로 이루어지며, .pth
파일은 한 번이 아니라 rtualenv. 그리고 이것은 또한 해커처럼 보입니다.
그러나 우리가 알고 있듯이 해킹 솔루션이나 복제 솔루션, 특히 표준 툴킷을 복제하는 솔루션은 모두 "파이썬 (pythonic)"으로 간주되지 않습니다.
이 스크립트가 장고 앱을위한 작업을 수행하고 있다면 [custom mangement commands] (https://docs.djangoproject.com/en/1.11/howto/custom-management-commands/)를 쓰는 것을 고려해보십시오. 스크립트를 자신의 package/디렉토리에 넣고 venv의 activate 스크립트에있는 env'PATH' 변수에 그 디렉토리를 추가 할 수도 있습니다. – schwobaseggl