2017-05-17 1 views
0

는 파이썬 스크립트는 다음과 같은 가정 주어진 휴대용 고려 될 수있다 :업데이트하지 않고 Python 스크립트를 판별하는 방법은 Portable입니까? 어떤 조건에서

    스크립트는 스크립트가 가져온됩니다
  • 하나 개의 호스트 (예를 들어,에 CentOS 또는 우분투 리눅스 배포판)에 개발 될 것이다
  • 다른 호스트 (예 : CentOS/Ubuntu)
  • 대상 호스트에서 pip 또는 다른 메커니즘을 사용하여 업데이트를 발생시키는 것은 허용되지 않습니다 (예 : 서버가 인터넷 액세스 및 IT 정책이없는 클린 룸에 있음).
  • 종속성을 가져 오는 것은 허용되지 않습니다. (예 pyInstaller 중에, 나 cx_Freeze, py2exe에 또는 py2app 같은 프로그램을 통해 예 : see relevant post)가 대상 호스트

아마도 용액 휴대용 파이썬 프로그램은 프로그램이 더 모듈 의존성 및 목적지 파이썬 프로그램 버전 경우 있다는 또한 호환됩니다. 그러나, (1) 모듈 의존성이 없다면 Python 스크립트 개발자가 함께 살 수있는 것인지 모르겠다. (2) 파이썬 프로그램의 버전 호환성이 실제로 어떤 의미인지는 모르겠다. (예 : 다른 파이썬 2 스크립트 버전과 호환되는 마이너/패치 버전의 파이썬 2 스크립트) 또한 실제로 일부 모듈은 Python 설치에서 항상 존재하는 "핵심"모듈이라고 가정합니다. 사실입니까? 그리고 파이썬 설치에서 항상 존재하는 것으로 간주되는 코어 모듈이나 다른 모듈의 버전 번호가 다른 경우 비 호환성이 발생할 수 있습니다. 모듈 버전 차이로 스크립트를 이식 할 수 없습니까?

질문 :는 휴대용 있는지 결정하기 위해 파이썬 스크립트를 분석하는 스크립트를 통해 어떤 방식으로 위의 제약 주어진 있는가? 그것이 없다면 인간 검사를 통해 동일한 결단을 내릴 수있는 방법이 있습니까?

+1

내가 상상할 수있는 유일한 방법은 제작자의 정확한 사본 인 개발 팀이 액세스 할 수있는 테스트 환경을 구축하는 것입니다.즉, 정확히 동일한 Python 버전 및 동일한 추가 모듈 (배포 모듈을 통해 또는 직접 파이썬 소스로 설치되었는지 여부 포함)을 의미합니다. –

+0

@SergeBallesta 그리고 (법적인 이유로) 모듈을 재배포 할 수없는 "클린 룸"요구 사항을 가진 미지의 고객에게 전달되는 소프트웨어에는 어려울 것입니다. 귀하의 의견에 감사드립니다. –

답변

1

폐쇄 프로덕션 환경에서 나중에 실행해야 스크립트를 개발하기 위해 2 가지 방법 (AFAIK)가 있습니다있는 테스트 환경을 설정

  • 당신이 정확한 생산 환경의 완전한 지식을 가지고있는 경우, 생산품의 복제품. 생산 시스템에 액세스 할 수 없지만 특정 플랫폼에 대해서만 개발할 수있는 개발 팀에게는 의미가 있습니다.
  • 알 수없는 고객에게 모듈을 배포하려면 역 논리를 적용합니다. 스크립트에 대한 모든 요구 사항을 나열하고 관리 팀이 모듈을 충족하는지 여부를 제어하게합니다.

후자는 미묘한 방법으로 더 복잡합니다. 대부분의 가능한 버전에서 스크립트를 이식 할 수 있기를 원할 경우 지원을 선언 한 다른 버전의 테스트 플랫폼을 빌드 (자동화)해야합니다. .

이론 상으로는 스크립트를 이식 할 수있는 곳을 미리 알 수 있습니다. 어떤 경우에도 절대로 가까이 오지 않으면 표준 Python 모듈 만 사용하고 많은 버전에서는 변경되지 않은 기능 만 사용할 수 있습니다. 모든 버전에서 이식 가능합니다. 그러나 이러한 요구 사항을 충족시키기는 어려우며 제어하기가 더 어렵습니다. 따라서 다른 버전에 대한 테스트는 스크립트를 실제로 이식 할 수있는 유일한 방법입니다.

관련 문제