2016-08-16 17 views
2

Я пытаюсь использовать систему упаковки континуума io anaconda для упаковки python-2.7.10 с другими зависимыми модулями для нашей среды. Я хочу автоматизировать дистрибутив пакета, чтобы просто быть одной установкой python с требуемыми нами модулями.Как ограничить anaconda от обновления установленного модуля, если его зависимость более высокого уровня

Проблема, с которой я сталкиваюсь, - это когда я указываю модули под параметром build в meta.yaml, он обновит версию установленного python, несмотря на то, что это python-2.7.10. Это вызовет ошибку в процессе сборки.

Есть ли способ привязать версию устанавливаемого python так, чтобы, если есть зависимость, она сильно потерпит неудачу или использует более раннюю версию пакета?

meta.yaml, ive попробовал не закреплять версию модулей.

package: 
    name: python 
    version: 2.7.10 

source: 
    fn: Python-2.7.10.tgz 
    url: https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz 
    md5: d7547558fd673bd9d38e2108c6b42521 

build: 
    no_link: bin/python 

requirements: 
    build: 
    - bzip2 [unix] 
    - zlib [unix] 
    - sqlite [unix] 
    - readline [unix] 
    - tk [unix] 
    - openssl [unix] 
    - system [linux] 
    - ipython 5.0.0 
    - numpy 1.11.1 
    - cython 0.24.1 
    - scipy 0.18.0 
    - pandas 0.18.1 
    - patsy 0.4.1 
    - statsmodels 0.6.1 
    - matplotlib 1.5.2 
    - ggplot 0.9.4 
    - scikit-learn 0.17.1 
    - distribute 0.6.45 
    - backports.ssl-match-hostname 3.5.0.1 
    - certifi 14.05.14 
    - nose_parameterized 0.5.0 
    - pyparsing 2.1.4 
    - python-dateutil 2.5.3 
    - pytz 2016.6.1 
    - pyzmq 15.3.0 
    - simplejson 3.3.3 
    - six 1.10.0 
    - sympy 1.0 
    - tornado 4.4.1 
    - virtualenv 13.0.1 
    - wsgiref 0.1.2 
    - python-swiftclient 2.7.0 
    #- python-ceilometerclient #issue 
    #- python-heatclient #issue 
    #- python-keystoneclient 1.6.0 
    #- python-novaclient 2.26.0 
    #- python-troveclient #issue 
    - python-cinderclient 1.1.2 
    - python-glanceclient 0.17.2 
    - python-neutronclient 2.4.0 
    - networkx 1.11 
    - pysal 1.11.1 
    - pyyaml 3.11 
    - shapely 1.5.13 
    - beautifulsoup4 4.4.1 
    - nltk 3.2.1 
    - requests 2.10.0 
    - seaborn 0.5.0 
    - h5py 2.6.0 
    - xlrd 1.0.0 
    - markupsafe 0.23 
    - crypto 1.1.0 
    - jinja2 2.8 
    - openpyxl 2.3.2 
    - jaro_winkler 1.0.2 
    - bokeh 0.12.1 
    - numexpr 2.6.1 
    - pytables 3.2.3.1 
    - pycurl 7.43.0 
    - mgrs 1.1.0 
    - psutil 4.3.0 
    - biopython 1.67 
    - enaml 0.9.8 
    - mdp 3.5 
    - bitarray 0.8.1 
    - clusterpy 0.9.9 
    - pyside 1.2.1 
    - pyqt 4.11.4 
    - parsedatetime 1.4 
    - pymysql 0.6.7 
    - pyodbc 3.0.10 
    - tabulate 0.7.2 

    run: 
    - zlib [unix] 
    - sqlite [unix] 
    - readline [unix] 
    - tk [unix] 
    - openssl [unix] 
    - system [linux] 

test: 
    commands: 
    - python -V [unix] 
    - 2to3 -h [unix] 
    - python-config --help [unix] 

about: 
    home: http://www.python.org/ 
    summary: general purpose programming language 
    license: PSF 

Выход с ошибкой:

$ conda build . 
Removing old build environment 
BUILD START: python-2.7.10-0 
    (actual version deferred until further download or env creation) 
Using Anaconda Cloud api site https://api.anaconda.org 

The following packages will be downloaded: 

    package     |   build 
    ---------------------------|----------------- 
    geos-3.5.0     |    0  16.9 MB defaults 
    libgcc-4.8.5    |    1   922 KB r 
    pixman-0.32.6    |    0   2.4 MB defaults 
    unixodbc-2.3.4    |    0   688 KB defaults 
    yaml-0.1.6     |    0   246 KB defaults 
    curl-7.49.0    |    1   543 KB defaults 
    glib-2.43.0    |    2   7.4 MB r 
    hdf5-1.8.17    |    1   1.9 MB defaults 
    atom-0.3.10    |   py27_0   676 KB defaults 
    backports_abc-0.4   |   py27_0   5 KB defaults 
    beautifulsoup4-4.4.1  |   py27_0   116 KB defaults 
    bitarray-0.8.1    |   py27_0   89 KB defaults 
    et_xmlfile-1.0.1   |   py27_0   15 KB defaults 
    future-0.15.2    |   py27_0   616 KB defaults 
    jaro_winkler-1.0.2   |   py27_0   24 KB auto 
    jdcal-1.2     |   py27_1   9 KB defaults 
    kiwisolver-0.1.3   |   py27_0   571 KB defaults 
    markupsafe-0.23   |   py27_2   31 KB defaults 
    mgrs-1.1.0     |   py27_0   48 KB auto 
    mpmath-0.19    |   py27_1   873 KB defaults 
    nltk-3.2.1     |   py27_0   1.7 MB defaults 
    parsedatetime-1.2   |   py27_0   39 KB auto 
    ply-3.8     |   py27_0   71 KB defaults 
    psutil-4.3.0    |   py27_0   224 KB defaults 
    pycurl-7.43.0    |   py27_0   128 KB defaults 
    pymysql-0.7.6    |   py27_0   116 KB defaults 
    pyodbc-3.0.10    |   py27_0   146 KB defaults 
    pyyaml-3.11    |   py27_4   297 KB defaults 
    pyzmq-15.4.0    |   py27_0   705 KB defaults 
    requests-2.10.0   |   py27_0   611 KB defaults 
    shapely-1.5.16    |   py27_0   494 KB defaults 
    tabulate-0.7.2    |   py27_0   18 KB auto 
    wsgiref-0.1.2    |   py27_0   943 B auto 
    xlrd-1.0.0     |   py27_0   181 KB defaults 
    biopython-1.67    |  np111py27_0   2.2 MB defaults 
    clusterpy-0.9.9   |   py27_1   101 KB conda-forge 
    cmd2-0.6.7     |   py27_0   33 KB auto 
    h5py-2.6.0     |  np111py27_2   2.4 MB defaults 
    jinja2-2.8     |   py27_1   264 KB defaults 
    jsonschema-2.5.1   |   py27_0   55 KB defaults 
    mdp-3.5     |   py27_0   477 KB defaults 
    networkx-1.11    |   py27_0   1.1 MB defaults 
    numexpr-2.6.1    |  np111py27_0   347 KB defaults 
    openpyxl-2.3.2    |   py27_0   248 KB defaults 
    rsa-3.4.2     |   py27_0   50 KB conda-forge 
    singledispatch-3.4.0.3  |   py27_1   17 KB r 
    ssl_match_hostname-3.4.0.2 |   py27_1   6 KB defaults 
    cliff-1.10.1    |   py27_0   36 KB gus 
    crypto-1.1.0    |   py27_0   3 KB auto 
    pysal-1.11.1    |   py27_0  11.2 MB defaults 
    pytables-3.2.3.1   |  np111py27_0   3.4 MB defaults 
    tornado-4.4.1    |   py27_0   552 KB defaults 
    bokeh-0.12.1    |   py27_0   3.2 MB defaults 
    harfbuzz-0.9.35   |    6   1.1 MB r 
    ipython-5.1.0    |   py27_0   936 KB defaults 
    pyopenssl-16.0.0   |   py27_0   66 KB defaults 
    pango-1.36.8    |    3   796 KB r 
    qt-4.8.7     |    4  32.7 MB defaults 
    python-neutronclient-2.4.0 |   py27_0   222 KB gus 
    shiboken-1.2.1    |   py27_0   883 KB defaults 
    enaml-0.9.8    |   py27_1   944 KB defaults 
    pyside-1.2.1    |   py27_1   5.7 MB defaults 
    seaborn-0.7.1    |   py27_0   272 KB defaults 
    ------------------------------------------------------------ 
              Total:  107.8 MB 

The following NEW packages will be INSTALLED: 

    atom:       0.3.10-py27_0  defaults 
    babel:      2.3.3-py27_0  defaults 
    backports:     1.0-py27_0   defaults 
    backports.ssl-match-hostname: 3.5.0.1-py27_0  getpantheon 
    backports_abc:    0.4-py27_0   defaults 
    beautifulsoup4:    4.4.1-py27_0  defaults 
    biopython:     1.67-np111py27_0 defaults 
    bitarray:      0.8.1-py27_0  defaults 
    bokeh:      0.12.1-py27_0  defaults 
    brewer2mpl:     1.4.1-py27_1  conda-forge 
    bzip2:      1.0.6-3    defaults 
    cairo:      1.12.18-6   defaults 
    certifi:      2016.2.28-py27_0 defaults 
    cffi:       1.6.0-py27_0  defaults 
    cliff:      1.10.1-py27_0  gus 
    clusterpy:     0.9.9-py27_1  conda-forge 
    cmd2:       0.6.7-py27_0  auto 
    crypto:      1.1.0-py27_0  auto 
    cryptography:     1.4-py27_0   defaults 
    curl:       7.49.0-1   defaults 
    cycler:      0.10.0-py27_0  defaults 
    cython:      0.24.1-py27_0  defaults 
    decorator:     4.0.10-py27_0  defaults 
    distribute:     0.6.45-py27_1  defaults 
    enaml:      0.9.8-py27_1  defaults 
    enum34:      1.1.6-py27_0  defaults 
    et_xmlfile:     1.0.1-py27_0  defaults 
    fontconfig:     2.11.1-6   defaults 
    freetype:      2.5.5-1    defaults 
    functools32:     3.2.3.2-py27_0  defaults 
    future:      0.15.2-py27_0  defaults 
    futures:      3.0.5-py27_0  defaults 
    geos:       3.5.0-0    defaults 
    get_terminal_size:   1.0.0-py27_0  defaults 
    ggplot:      0.11.1-py27_1  conda-forge 
    glib:       2.43.0-2   r 
    h5py:       2.6.0-np111py27_2 defaults 
    harfbuzz:      0.9.35-6   r 
    hdf5:       1.8.17-1   defaults 
    idna:       2.1-py27_0   defaults 
    ipaddress:     1.0.16-py27_0  defaults 
    ipython:      5.1.0-py27_0  defaults 
    ipython_genutils:    0.1.0-py27_0  defaults 
    iso8601:      0.1.11-py27_0  defaults 
    jaro_winkler:     1.0.2-py27_0  auto 
    jdcal:      1.2-py27_1   defaults 
    jinja2:      2.8-py27_1   defaults 
    jsonpatch:     1.3-py27_0   auto 
    jsonpointer:     1.2-py27_0   auto 
    jsonschema:     2.5.1-py27_0  defaults 
    kiwisolver:     0.1.3-py27_0  defaults 
    libffi:      3.2.1-0    defaults 
    libgcc:      4.8.5-1    r 
    libgfortran:     3.0.0-1    defaults 
    libpng:      1.6.22-0   defaults 
    libsodium:     1.0.10-0   defaults 
    libxml2:      2.9.2-0    defaults 
    markupsafe:     0.23-py27_2   defaults 
    matplotlib:     1.5.1-np111py27_0 defaults 
    mdp:       3.5-py27_0   defaults 
    mgrs:       1.1.0-py27_0  auto 
    mkl:       11.3.3-0   defaults 
    mpmath:      0.19-py27_1   defaults 
    msgpack-python:    0.4.7-py27_0  defaults 
    netaddr:      0.7.18-py27_0  conda-forge 
    netifaces:     0.10.4-py27_0  conda-forge 
    networkx:      1.11-py27_0   defaults 
    nltk:       3.2.1-py27_0  defaults 
    nose_parameterized:   0.5.0-py27_0  conda-forge 
    numexpr:      2.6.1-np111py27_0 defaults 
    numpy:      1.11.1-py27_0  defaults 
    openpyxl:      2.3.2-py27_0  defaults 
    openssl:      1.0.2h-1   defaults 
    oslo.config:     1.9.3-py27_0  gus 
    oslo.i18n:     1.5.0-py27_0  gus 
    oslo.serialization:   1.4.0-py27_0  gus 
    oslo.utils:     1.4.0-py27_0  gus 
    pandas:      0.18.1-np111py27_0 defaults 
    pango:      1.36.8-3   r 
    parsedatetime:    1.2-py27_0   auto 
    path.py:      8.2.1-py27_0  defaults 
    pathlib2:      2.1.0-py27_0  defaults 
    patsy:      0.4.1-py27_0  defaults 
    pbr:       0.11.0-py27_0  defaults 
    pexpect:      4.0.1-py27_0  defaults 
    pickleshare:     0.7.3-py27_0  defaults 
    pip:       8.1.2-py27_0  defaults 
    pixman:      0.32.6-0   defaults 
    ply:       3.8-py27_0   defaults 
    prettytable:     0.7.2-py27_0  conda-forge 
    prompt_toolkit:    1.0.3-py27_0  defaults 
    psutil:      4.3.0-py27_0  defaults 
    ptyprocess:     0.5.1-py27_0  defaults 
    pyasn1:      0.1.9-py27_0  defaults 
    pycairo:      1.10.0-py27_0  defaults 
    pycparser:     2.14-py27_1   defaults 
    pycurl:      7.43.0-py27_0  defaults 
    pygments:      2.1.3-py27_0  defaults 
    pymysql:      0.7.6-py27_0  defaults 
    pyodbc:      3.0.10-py27_0  defaults 
    pyopenssl:     16.0.0-py27_0  defaults 
    pyparsing:     2.1.4-py27_0  defaults 
    pyqt:       4.11.4-py27_4  defaults 
    pysal:      1.11.1-py27_0  defaults 
    pyside:      1.2.1-py27_1  defaults 
    pytables:      3.2.3.1-np111py27_0 defaults 
    python:      2.7.12-1   defaults 
    python-cinderclient:   1.1.2-py27_0  gus 
    python-dateutil:    2.5.3-py27_0  defaults 
    python-glanceclient:   0.17.2-py27_0  gus 
    python-keystoneclient:  1.3.2-py27_0  gus 
    python-neutronclient:   2.4.0-py27_0  gus 
    python-swiftclient:   2.7.0-py27_0  chenghlee 
    pytz:       2016.6.1-py27_0  defaults 
    pyyaml:      3.11-py27_4   defaults 
    pyzmq:      15.4.0-py27_0  defaults 
    qt:       4.8.7-4    defaults 
    readline:      6.2-2    defaults 
    requests:      2.10.0-py27_0  defaults 
    rsa:       3.4.2-py27_0  conda-forge 
    scikit-learn:     0.17.1-np111py27_2 defaults 
    scipy:      0.18.0-np111py27_0 defaults 
    seaborn:      0.7.1-py27_0  defaults 
    setuptools:     25.1.6-py27_0  defaults 
    shapely:      1.5.16-py27_0  defaults 
    shiboken:      1.2.1-py27_0  defaults 
    simplegeneric:    0.8.1-py27_1  defaults 
    simplejson:     3.8.2-py27_0  defaults 
    singledispatch:    3.4.0.3-py27_1  r 
    sip:       4.18-py27_0   defaults 
    six:       1.10.0-py27_0  defaults 
    sqlite:      3.13.0-0   defaults 
    ssl_match_hostname:   3.4.0.2-py27_1  defaults 
    statsmodels:     0.6.1-np111py27_1 defaults 
    stevedore:     1.3.0-py27_0  gus 
    sympy:      1.0-py27_0   defaults 
    system:      5.8-2    defaults 
    tabulate:      0.7.2-py27_0  auto 
    tk:       8.5.18-0   defaults 
    tornado:      4.4.1-py27_0  defaults 
    traitlets:     4.2.2-py27_0  defaults 
    unixodbc:      2.3.4-0    defaults 
    virtualenv:     13.0.1-py27_0  defaults 
    warlock:      1.3.0-py27_0  conda-forge 
    wcwidth:      0.1.7-py27_0  defaults 
    wheel:      0.29.0-py27_0  defaults 
    wsgiref:      0.1.2-py27_0  auto 
    xlrd:       1.0.0-py27_0  defaults 
    yaml:       0.1.6-0    defaults 
    zeromq:      4.1.4-0    defaults 
    zlib:       1.2.8-3    defaults 

Source cache directory is: /opt/app/anaconda2/conda-bld/src_cache 
Found source in cache: Python-2.7.10.tgz 
Extracting download 
BUILD START: python-2.7.10-0 
python is installed as a build dependency. Removing. 
An unexpected error has occurred, please consider sending the 
following traceback to the conda GitHub issue tracker at: 

    https://github.com/conda/conda-build/issues 

Include the output of the command 'conda info' in your report. 


Traceback (most recent call last): 
    File "/opt/app/anaconda2/bin/conda-build", line 5, in <module> 
    sys.exit(main()) 
    File "/opt/app/anaconda2/lib/python2.7/site-packages/conda_build/main_build.py", line 152, in main 
    args_func(args, p) 
    File "/opt/app/anaconda2/lib/python2.7/site-packages/conda_build/main_build.py", line 415, in args_func 
    args.func(args, p) 
    File "/opt/app/anaconda2/lib/python2.7/site-packages/conda_build/main_build.py", line 358, in execute 
    debug=args.debug) 
    File "/opt/app/anaconda2/lib/python2.7/site-packages/conda_build/build.py", line 561, in build 
    assert not plan.nothing_to_do(actions), actions 
AssertionError: defaultdict(<type 'list'>, {'op_order': ('RM_FETCHED', 'FETCH', 'RM_EXTRACTED', 'EXTRACT', 'UNLINK', 'LINK', 'SYMLINK_CONDA'), 'PREFIX': '/opt/app/anaconda2/envs/_build_placehold_placehold_placehold_placehold_placehold'}) 
+0

Почему вы пытаетесь построить Python? Вам нужна специально скомпилированная версия Python для вашего случая использования? Если вы просто пытаетесь распространять определенную среду для своих пользователей, посмотрите ['conda env export'] (http://conda.pydata.org/docs/commands/env/conda-env-export.html), который создает файл 'environment.yml' и [' conda create -file'] (http://conda.pydata.org/docs/commands/conda-create.html) – darthbith

ответ

0

Если нет особых причин, вы должны скомпилировать Python самостоятельно, я думаю, что вы на самом деле происходит после того, как conda bundle (http://conda.pydata.org/docs/commands/conda-bundle.html). К сожалению, мы удалили его в conda 4.2, который скоро выйдет, намереваясь переместить его в сборку conda. Так как этого еще не произошло, и если он в конечном итоге окажется полезным для людей, мы можем добавить его обратно.


Вы также можете попробовать это с помощью Конда-билд ...

Удалить весь source блок в файле meta.yaml. Также удалите все требования к сборке, которые также не выполняются. Затем в build.sh файле

conda install --yes --quiet \ 
    python=2.7.10 \ 
    ipython=5.0.0 \ 
    numpy=1.11.1 \ 
    cython=0.24.1 \ 
    scipy=0.18.0 \ 
    pandas=0.18.1 \ 
    patsy=0.4.1 \ 
    statsmodels=0.6.1 \ 
    matplotlib=1.5.2 \ 
    ggplot=0.9.4 \ 
    scikit-learn=0.17.1 \ 
    distribute=0.6.45 \ 
    backports.ssl-match-hostname=3.5.0.1 \ 
    certifi=14.05.14 \ 
    nose_parameterized=0.5.0 \ 
    pyparsing=2.1.4 \ 
    python-dateutil=2.5.3 \ 
    pytz=2016.6.1 \ 
    pyzmq=15.3.0 \ 
    simplejson=3.3.3 \ 
    six=1.10.0 \ 
    sympy=1.0 \ 
    tornado=4.4.1 \ 
    virtualenv=13.0.1 \ 
    wsgiref=0.1.2 \ 
    python-swiftclient=2.7.0 \ 
    python-cinderclient=1.1.2 \ 
    python-glanceclient=0.17.2 \ 
    python-neutronclient=2.4.0 \ 
    networkx=1.11 \ 
    pysal=1.11.1 \ 
    pyyaml=3.11 \ 
    shapely=1.5.13 \ 
    beautifulsoup4=4.4.1 \ 
    nltk=3.2.1 \ 
    requests=2.10.0 \ 
    seaborn=0.5.0 \ 
    h5py=2.6.0 \ 
    xlrd=1.0.0 \ 
    markupsafe=0.23 \ 
    crypto=1.1.0 \ 
    jinja2=2.8 \ 
    openpyxl=2.3.2 \ 
    jaro_winkler=1.0.2 \ 
    bokeh=0.12.1 \ 
    numexpr=2.6.1 \ 
    pytables=3.2.3.1 \ 
    pycurl=7.43.0 \ 
    mgrs=1.1.0 \ 
    psutil=4.3.0 \ 
    biopython=1.67 \ 
    enaml=0.9.8 \ 
    mdp=3.5 \ 
    bitarray=0.8.1 \ 
    clusterpy=0.9.9 \ 
    pyside=1.2.1 \ 
    pyqt=4.11.4 \ 
    parsedatetime=1.4 \ 
    pymysql=0.6.7 \ 
    pyodbc=3.0.10 \ 
    tabulate=0.7.2 

Большая разница: перечисляя все эти пакеты, как требования строительных, вы на самом деле обеспечения того, чтобы они не будет в вашем окончательном пакете Конда. Подумайте о требованиях к сборке, которые больше похожи на компилятор или что-то, что необходимо, когда вы создаете пакет, но не тогда, когда вы его запускаете.