문제

내 디렉토리 구조가 다음과 같이 간단한 파이썬 응용 프로그램이 있습니다.

  • 프로젝트/
    • main.py
    • config.py
    • 플러그인/
      • 플러그인 1
      • 플러그인 2
      • ...

config.py는 구성 파일 만로드하므로 구성 정보 자체가 포함되어 있지 않습니다.

이제이 프로그램을 배포하고 싶었고 SetupTools를 사용하여이를 수행 할 것이라고 생각했습니다. 사용자가 사용 해야하는 파일은 main.py이므로/usr/bin으로 명확하게 들어가고 나머지 파일은/usr/share/project로 들어갑니다.

그러나 한 가지 문제가 있습니다. 어떻게 든 main.py에게 공유 디렉토리에서 config.py를 찾으라고 말해야합니다. 그러나 SetupTools에 달려 있기 때문에 Share Directory가 정확히 어디에 있는지 확신 할 수 없습니다.

파이썬 기반 애플리케이션을 배포 할 때 가장 모범 사례는 무엇입니까?

도움이 되었습니까?

해결책

SetUptools Python에서 도달 할 수있는 위치에 패키지를 설치하십시오. 즉, 가져올 수 있습니다.

import project

절대 수입 대신 상대 수입을 할 때 문제가 발생합니다. 당신의 경우 main.py 수입 config.py 동일한 디렉토리에 살기 때문에 작동합니다. 당신이 당신을 움직일 때 main.py 같은 다른 위치에 /usr/bin 또는 다른 위치에 있습니다 환경 변수, 파이썬은 가져 오려고합니다 config.py ~에서 sys.path 그리고 당신의 패키지 dir가 아닙니다. 해결책은 절대 가져 오기를 사용하는 것입니다.

from project import config

지금 main.py "움직일 수"입니다.

내가 선호하는 또 다른 솔루션은 SetUptools.

코드를 사용하는 대신 a

if __name__ == "__main__":
    # here all your beautiful code

진술, 코드를 함수에 넣습니다 (메인은 좋은 이름 일 수 있음) :

def main():
    # put your code here

if __name__ == "__main__":    # not needed, just in case...
    main()

이제 수정하십시오 setup.py:

setup(
    # ...
    entry_points = {
        "console_scripts": [
            # modify script_name with the name you want use from shell
            # $ script_name [params]
            "script_name = project.main:main",
        ],
    }
)

그게 다야. 설치 후 SetUptools 쉘에서 호출 할 수 있고 주 기능을 호출하는 래퍼 스크립트를 만듭니다. 지금 main.py 프로젝트 디렉토리에 살 수 있으며 더 이상 이동할 필요가 없습니다. bin/ 예배 규칙서. 주목하십시오 SetUptools 이 스크립트를 자동으로 넣습니다 bin/ 설치 접두사에 대한 디렉토리.

es.

python setup.py install --prefix ~/.local

프로젝트 패키지를 설치하십시오

~/.local/lib/python<version>/site-packages/<package_name>

그리고 당신의 대본

~/.local/bin/<script_name>

그러니 확인하십시오 ~/.local/bin 당신에게 존재합니다 env.

추가 정보 : http://peak.telecommunity.com/devcenter/setuptools#automatic-script-creation

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top