문제에 대한 해결책을 검색할 때 종종 다음과 같은 코드 줄을 찾게 됩니다.
curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -
이것은 Python 스크립트를 사용하여 인터넷 연결 속도를 측정하는 코드 라인입니다. 내 컴퓨터에서 코드가 수행하는 작업을 알지 못한 채 이와 같은 코드 줄을 실행하면 보안에 영향을 미칠 수 있다는 것을 알고 있습니다. 하지만 코드를 개발해서 그냥 개인적인 용도로 사용하고 싶을 때에는 문제가 되지 않으며, 시스템 설치에 대한 걱정 없이 내가 만든 특정 기능을 다른 시스템에서 쉽게 실행할 수 있어서 매우 편리합니다. 뭔가.
이 경우에는 Python 스크립트이지만 크기로 판단하면 일부 라이브러리가 동일한 스크립트에 통합되어 이와 같이 실행될 수 있다고 가정합니다. 그래서 제 질문은: Python 코드를 단일 파일로 통합하는 방법은 무엇입니까? 명령줄이 있나요? 예를 들어 표준 라이브러리의 일부가 아닌 특정 라이브러리를 사용하고 있다고 가정해 보겠습니다 geopandas
. 이를 자동으로 내 스크립트에 통합할 수 있는 방법이 있습니까?
바이너리 솔루션을 사용하면 서로 다른 시스템 간의 이식성을 높일 수 있습니까? 그러한 파이프라인을 통해 어떤 언어로든 작성된 코드를 실행할 수 있도록 하시겠습니까?
답변1
이론적으로는 이를 스크립트에 포함할 수 있지만 그렇게 하지 않는 것이 좋습니다. 모듈에 따라 스크립트의 용량이 상당히 커집니다.
특정 Python 버전이나 기타 요구 사항이 필요할 수도 있습니다. 일반적으로 작은 전제 조건 메모를 추가하고 다음을 포함하는
것이 가장 좋습니다.README.md
ㅏrequirements.txt
쉬운 설치로 pip
.
그런 다음 다음과 같이 한 번에 실행할 수 있습니다.
pip install -r <(curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/requirements.txt) \
&& curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -
또는
git clone https://github.com/sivel/speedtest-cli.git
cd speedtest-cli
pip install -r requirements.txt
python speedtest.py
후자는 간단한 git pull
.
(사실 이것은 저장소에 설치 스크립트가 포함되어 있고 README.md
모든 것을 설명하기 때문에 나쁜 예이지만 그 사실을 무시했습니다...)