ポータブルな方法でPythonをインストールするにはどうすればよいですか?

ポータブルな方法でPythonをインストールするにはどうすればよいですか?

特定のスキーマ/構造を持つデータベースを別の構造を持つデータベースに移行するpythonスクリプトを作成しています。mysqlpostgresql

開発段階では、仮想マシン()で作業し、CentOS7すべての環境が正しく設定されました。

現在テスト段階にあり、初めて実際のサーバーでスクリプトを実行しようとしていますが、他の環境(互換性のないPythonバージョンまたはPythonモジュールバージョン)が原因で問題が発生しています。

このスクリプトは複数のサーバーで実行する必要があるため(すべてのサーバーはGNU / Linuxサーバー、ほとんどはCentOS、一部はDebianです)PythonとすべてのPythonモジュール(依存関係)を自分のスクリプトに直接統合する方法を探しています。、何を意味するのか分からない場合は、Pythonのポータブルバージョンです。

たとえば、次の要素/バイナリを私のスクリプトパッケージに統合したいと思います。

  • Python 2.7.5
  • mysql-connector-python-2.1.3-1
  • Python-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 /アーキテクチャでスクリプトを使用したい場合は、そのパッケージのバージョンを提供しないと不可能です。

関連情報