휴대용 방식으로 Python을 설치하는 것이 어떻게 가능합니까?

휴대용 방식으로 Python을 설치하는 것이 어떻게 가능합니까?

특정 스키마/구조를 가진 데이터베이스를 다른 구조를 가진 데이터베이스 로 마이그레이션 python하는 스크립트를 작성 중입니다 .mysqlpostgresql

개발 단계에서는 가상 머신()에서 작업하며 CentOS7모든 환경이 올바르게 설정되었습니다.

현재 테스트 단계에 있으며 처음으로 실제 서버에서 스크립트를 실행하려고 하는데 이미 다른 환경(호환되지 않는 Python 버전 또는 Python 모듈 버전)으로 인해 문제가 발생하고 있습니다.

이 스크립트를 여러 서버에서 실행해야 하기 때문에(모든 서버는 GNU/Linux 서버이고 대부분은 CentOS이고 일부는 Debian입니다)Python과 모든 Python 모듈(종속성)을 내 스크립트에 직접 통합하는 방법을 찾고 있습니다., 무슨 말인지 아신다면 Python의 휴대용 버전입니다.

예를 들어, 다음 요소/바이너리를 내 스크립트 패키지에 통합하고 싶습니다.

  • 파이썬 2.7.5
  • mysql-커넥터-python-2.1.3-1
  • 파이썬-psycopg2

답변1

virtualenv당신이 찾고있는 것일 수도 있습니다. 바라보다 http://docs.python-guide.org/en/latest/dev/virtualenvs/:

가상 환경은 다양한 프로젝트에 대한 가상 Python 환경을 생성하여 다양한 위치에 다양한 프로젝트에 필요한 종속성을 저장하는 도구입니다. 이는 "프로젝트 X는 버전 1.x에 의존하지만 프로젝트 Y에는 4.x가 필요합니다"라는 딜레마를 해결하고 전역 사이트 패키지 디렉터리를 깨끗하고 관리하기 쉽게 유지합니다.

pip를 통해 virtualenv를 설치합니다.

$ pip install virtualenv

기본 사용법

  1. 프로젝트에 대한 가상 환경을 만듭니다.

    $ cd  my_project_folder 
    $ virtualenv venv 
    

    virtualenv venvPython 실행 파일과 다른 패키지를 설치하는 데 사용할 수 있는 pip 라이브러리의 복사본이 포함된 폴더가 현재 디렉터리에 생성됩니다. 가상 환경의 이름(이 경우 venv)은 무엇이든 가능합니다. 이름을 생략하면 파일이 현재 디렉터리에 배치됩니다.

    그러면 명령을 실행하는 디렉터리에 Python 복사본이 생성되고 venv라는 폴더에 배치됩니다.

    원하는 Python 인터프리터를 사용할 수도 있습니다.

    $ virtualenv -p /usr/bin/python2.7 venv 
    

    이는 /usr/bin/python2.7의 Python 인터프리터를 사용합니다.

  2. 가상 환경 사용을 시작하려면 활성화해야 합니다.

    $ source venv/bin/activate 
    

    이제 현재 가상 환경의 이름이 프롬프트 왼쪽에 표시되어(예 (venv)Your-Computer:your_project UserName$: ) 활성 상태임을 알려줍니다. 이제부터 pip를 사용하여 설치된 모든 패키지는 전역 Python 설치와 격리된 venv 폴더에 배치됩니다.

    평소대로 패키지를 설치합니다. 예를 들면 다음과 같습니다.

    $ pip install requests 
    

    가상 환경에서 작업을 일시적으로 마친 경우 이를 비활성화할 수 있습니다.

    $ deactivate
    

환경을 이동하려는 경우:

virtualenv에 설치된 패키지를 나열할 수 있습니다.

    $ pip freeze > requirements.txt

다음을 사용하여 대상 virtualenv에 설치하십시오.

    $ pip install -r requirements.txt

내 경험상 python2 및 python3에 대한 virtualenv를 생성하고 관리하는 것이 가능합니다(내 시스템에는 virtualenv및 가 있습니다 virtualenv3).

virtualenv 자체는 Python 인터프리터를 제공하지 않습니다. 이를 통해 Python 인터프리터를 이미 사용할 수 있는 격리된 환경을 만들 수 있습니다.

IMHO, Python 바이너리를 스크립트에 묶으면 패키지가 더 커질 뿐만 아니라 실제로 스크립트도 더 커집니다.더 적은바이너리는 특정 운영 체제 및 glibc용으로 컴파일되므로 이식 가능합니다. 누군가가 다른 (Linux) OS/아키텍처에서 스크립트를 사용하려는 경우 해당 패키지 버전을 제공하지 않으면 불가능합니다.

관련 정보