debian
특정 Python 패키지를 설치해야 하는 패키지가 있습니다 pip installed <python-package>
.
패키지와 함께 설치 되도록 (예: 시작 시) 패키지를 정확히 어떻게 구성해야 합니까 .deb
(아마도 를 통해 ) ?debian/rules
<python-package>
dpkg -i mypackage.deb
답변1
이것은 쉬운 일이 아닙니다. 여러 가지 가능성이 설명되어 있습니다.이 문제그리고 그 답변이지만 @FerencWagner가 말했듯이 가장 좋고 가장 정확한 솔루션은 모든 종속성을 데비안 패키지로 다시 패키징하는 것입니다.
일부 Python 패키지는 jsonpickle과 같은 데비안 패키지로 이미 사용 가능합니다.
$ apt-cache search jsonpickle
python-jsonpickle - Python library for serializing object graphs into JSON (Python 2)
python-jsonpickle-doc - Python library for serializing object graphs into JSON (documentation)
python3-jsonpickle - Python library for serializing object graphs into JSON (Python 3)
따라서 먼저 검색해야 합니다. 어쩌면 스스로 아무것도 할 필요가 없을 수도 있습니다.
답변2
다음은 호스트 시스템에서 다른 Linux 시스템(machine1이라고 함)으로 python3 애플리케이션을 패키징하고 배포하는 방법에 대한 가이드입니다.
먼저 귀하의 Python 애플리케이션이 올바르게 구축되었다고 가정합니다. setup.py
여기에 제가 사용하는 예가 있습니다.링크 보기.
python3 애플리케이션 종속성을 설치합니다.
1.1 "foo" 애플리케이션이 있는 디렉토리로 이동하여
setup.py
다음을 실행합니다.$ cd path_to_foo/foo/ $ python3 setup.py sdist bdist_wheel
1.2. "dist" 폴더가 생성되고
foo-0.1-py3-none-any.whl
파일이 machine1에 복사됩니다.1.3. machine1에 로그인하고
whl
파일 경로로 이동하여 다음을 실행합니다.$ cd path_to_whl_file/ $ pip3 install foo-0.1-py3-none-any.whl
Python3 애플리케이션 패키지 설치
2.1. 먼저 (호스트 개발 시스템에) fpm을 설치해야 합니다. 자세한 내용은 여기를 확인하세요.FPM을 사용하여 다양한 형식의 패키지를 쉽게 만드는 방법.
$ sudo apt-get update $ sudo apt-get install ruby-dev build-essential $ sudo gem install fpm
2.2. 그런 다음 foo 애플리케이션이 저장된 디렉토리로 이동하여 실행합니다.
$ sudo fpm --python-bin python3 --python-pip pip3 \ --python-package-name-prefix python3 --no-python-dependencies \ --python-install-bin /usr/bin -s python -t deb \ path_to_foo_application/
패키지를 생성해야합니다
python3-foo_0.1_all.deb
2.3. machine1에 로그인하여 deb 패키지 경로를 입력하고 설치합니다.
$ cd path_to_deb_package/ $ sudo dpkg -i python3-foo-_0.1_all.deb
그게 다입니다. 이제 어디서나 애플리케이션을 실행할 수 있습니다(애플리케이션 위치
/usr/bin/
).
이것이 귀하의 질문에 대한 답변이 되고 Python3 패키지를 생성/구축하는 데 도움이 되기를 바랍니다.
노트:Ubuntu, Debian 및 Raspbian에서 작동합니다.