4

単純に何かを壊すことができないラボ マシンでは、複数のバージョンの Python がインストールされているようです。

python --version を実行すると、2.7.1 が表示されます。

「apt-get install numpy」で numpy をインストールしましたが、インストールされていると表示されますが、インポートしようとしても見つかりません。

numpy のマシンで検索を行うと、/usr/lib/python2.5/site-packages/numpy フォルダーに表示されます。これが問題だと思います... apt-getが2.7ではなく2.5バージョンに入れたことです。

これを解決するにはどうすればよいですか? インストール時にどの python について話しているかを apt-get に伝える方法はありますか? それとも、aptitude を放棄して pip か何かを使用しますか?

4

4 に答える 4

4

1 台のマシンで複数のバージョンの python を使用する場合は、virtualenvを調査する必要があります。

virtualenv は、分離された Python 環境を作成するためのツールです。

対処されている基本的な問題は、依存関係とバージョン、および間接的なアクセス許可の 1 つです。バージョン 1 の LibFoo が必要なアプリケーションがあり、別のアプリケーションではバージョン 2 が必要だとします。これらのアプリケーションを両方とも使用するにはどうすればよいでしょうか? すべてを /usr/lib/python2.7/site-packages (またはプラットフォームの標準的な場所) にインストールすると、アップグレードしてはならないアプリケーションを意図せずにアップグレードしてしまうという状況に陥りやすくなります。

または、より一般的に言えば、アプリケーションをインストールしてそのままにしたい場合はどうすればよいでしょうか? アプリケーションが機能する場合、そのライブラリまたはそれらのライブラリのバージョンが変更されると、アプリケーションが壊れる可能性があります。

また、グローバルの site-packages ディレクトリにパッケージをインストールできない場合はどうすればよいでしょうか? たとえば、共有ホストで。

これらすべてのケースで、virtualenv が役に立ちます。独自のインストール ディレクトリを持つ環境を作成し、ライブラリを他の virtualenv 環境と共有しません (オプションで、グローバルにインストールされたライブラリにもアクセスしません)。

Here is a question with similar solution .

さらに、virtualenvwrapperを使用すると、複数の環境の管理が非常に簡単になることがわかったからです。

于 2012-01-22T21:28:05.097 に答える
3

Pythonモジュールをインストールするための優れた標準的で簡単な方法はpipです

これにより、コマンドを使用してパッケージをインストールします(Pythonシェルではなくターミナルで)

pip install <packagename>

(ルート権限あり)

依存関係を処理します。

Python の複数バージョンの処理:

これが標準的な慣行かどうかはわかりませんが、私はこのようにしています。

たとえば、バージョン 2.5 にパッケージをインストールするには、

python2.5 /usr/bin/pip install <packagename>

Ubuntu にはデフォルトで複数の Python バージョンが用意されています (例: 2.4、2.6、2.7、3.2 など)。

あなたの場合、python2.7にnumpyをインストールしたくない場合(IMOにする必要があります:))、python2.5を使用しても問題ない場合は、python2.5を起動してnumpyを使用できます

    $python2.5

    >>> numpy をインポート
    >>>

編集:

を使用するapt-get installと、パッケージはシステムのデフォルトの Python バージョンにインストールされます。

于 2012-01-22T21:34:11.200 に答える
1

Apt/dpkg には、インストールされている Python の複数のバージョンを管理する Debian の方法があります (python-support と呼ばれていると思います)。numpy などの追加パッケージをインストールすると、自動的にビルドされ、そのパッケージでサポートされ、dpkg でインストールされた Python のすべてのバージョンで使用できるようになります。numpy はすべての Python をサポートしているため、情報によると、システム上の唯一の Debian python パッケージは 2.5 であり、PATH の 2.7 はおそらく /usr/local にあります。numpy パッケージをインストールすると、ローカルにビルドされた 2.7 について認識されません。いつでも easy_install できます。

virtualenv を使用するという提案は良いものです。Debian不安定版から削除されたpython 2.5を使用してサポートしている実稼働システムがあります。virtualenv を使用すると、必要などのバージョンでも動作できます。非常に多くのツールで python が必要とされているので、システムの python は Debian が望むままにしておく方がよいでしょう。

于 2012-01-23T02:12:50.507 に答える
0

Debian では、複数の Python をインストールできます (python2.5およびpython2.6パッケージ)。パッケージ内の numpy のような Python ライブラリはpython-numpy、これらの複数をサポートできますが、パッケージ マネージャーを介してインストールされた特定のライブラリは、必ずしもこれらすべてでサポートされるとは限りません。を使用apt-cache show python-numpy | grep Python-Versionして、サポートされているバージョンを確認できます。2.7 がサポートされていない場合は、ソースまたは (例) pip、easy_install などからインストールする必要があります。

ただし、Python 2.7 のローカル インストールがある場合があります (リポジトリ外のソースからコンパイルおよびインストールされます)。あなたのディストリビューションは少し古くなっているように思えます (Linux Mint 12 では、numpy でサポートされているのは 2.6 と 2.7 のみです)。そのため、Python 2.7 の公式パッケージがない可能性があります。そうで、which pythonそれが 内または/usr/localそれ以外の場所/usr/binにある場合は、ローカルにインストールされているので、source または easy_install とその仲間を使用してパッケージをインストールする必要があります。

そうは言っても、開発のためにこれらのライブラリが必要な場合はvirtualenv、ホームディレクトリのサンドボックス ( など) に保管する必要があるというのが私の意見です。そうすれば、使用している正確なバージョンをより適切に制御できます。

于 2012-01-23T18:20:01.230 に答える