12

このファイルを実行するときにユーザーがアナコンダを使用している場合、ライブラリの依存関係の更新が自動的に行われるようにしたい社内の python lib を配布しています。(これはリクエストによるものです。私次第であれば、ユーザーが自分のパッケージを制御できるようにします。)

これまでのところ、私は次のようなものを思いつきました

def _user_has_conda():
    cmd = 'conda --help'
    p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    out, err = p.communicate()
    if len(out) > 0 and len(err) == 0:
        return True
    else:
        return False

しかし、これは実際には、ユーザーが自分のシステムに anaconda をインストールしているかどうかのみを示しており、現在の python プロセスが anaconda 環境で実行されているかどうかは示していません。

私が気付いたのは、python または ipython シェルを起動すると、「Python 3.3.3 |Continuum Analytics, Inc|」と表示されることです。頂点で。私の次のアイデアは、この文字列を取得して「Continuum Analytics」が存在するかどうかを確認する方法を見つけようとすることです。存在する場合は、ユーザーがアナコンダで実行されていると想定します。

もっと良いアイデアがあると確信しています。それが私がここにいる理由です。

ありがとうございました。

4

3 に答える 3

15

バージョン <= 3.6 の場合:

In [109]: import sys

In [110]: 'conda' in sys.version
Out[110]: True

バージョン >= 3.7 の場合、バージョン情報は次のように変更されました。

In [2]: sys.version
Out[2]: '3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)]'

この投稿から ソリューションを次のように変更する必要があります。

import sys, os
is_conda = os.path.exists(os.path.join(sys.prefix, 'conda-meta'))
于 2014-01-22T12:20:32.287 に答える
5

ドキュメント: http://docs.python.org/2/library/sys.html#sys.version

In [1]: import sys; sys.version
Out[1]: '2.7.5 |Anaconda 1.8.0 (64-bit)| (default, Jul  1 2013, 12:37:52) [MSC v.1500 64 bit (AMD64)]'
于 2014-01-22T12:15:05.727 に答える