python - conda 无法从 yml 创建环境
问题描述
我正在尝试运行以下代码以从 YAML 文件创建虚拟 Python 环境。我在 Ubuntu 服务器的命令行中运行代码。虚拟环境名为 py36。当我运行下面的代码时,我收到下面的消息。环境也没有被创造出来。这个问题是因为我有几个必须使用 pip 而不是 Anaconda 安装的包引起的吗?有谁知道如何解决这个问题?
我按照以下示例创建了 YAML 文件:
https://datascience.stackexchange.com/questions/24093/how-to-clone-python-working-environment-on-another-machine
代码:
conda env create -f py36.yml
py36.yml
name: py36
channels:
- anaconda
- cvxgrp
- conda-forge
- defaults
dependencies:
- beautifulsoup4=4.6.3=py36_0
- patsy=0.5.1=py36_0
- sqlite=3.25.3=ha441bb4_0
- tk=8.6.8=ha441bb4_0
- asn1crypto=0.24.0=py36_1003
- ca-certificates=2018.11.29=ha4d7672_0
- certifi=2018.11.29=py36_1000
- cffi=1.11.5=py36h5e8e0c9_1
- clangdev=4.0.0=default_0
- cryptography=2.3.1=py36hdbc3d79_1000
- cryptography-vectors=2.3.1=py36_1000
- cycler=0.10.0=py_1
- fftw=3.3.8=h470a237_0
- freetype=2.9.1=h6debe1e_4
- glpk=4.65=h16a7912_1
- gmp=6.1.2=hfc679d8_0
- icu=58.2=h0a44026_1000
- idna=2.8=py36_1000
- kiwisolver=1.0.1=py36h2d50403_2
- lapack=3.6.1=1
- libiconv=1.15=h1de35cc_1004
- libpng=1.6.35=ha92aebf_2
- libxml2=2.9.8=hf14e9c8_1005
- lightgbm=2.2.1=py36hfc679d8_0
- llvmdev=4.0.0=default_0
- matplotlib=2.2.3=py36h0e0179f_0
- metis=5.1.0=3
- mkl_fft=1.0.6=py36_0
- mkl_random=1.0.1=py36_0
- mlxtend=0.13.0=py_1
- openblas=0.2.20=8
- openmp=4.0.0=1
- openssl=1.0.2p=h1de35cc_1002
- pandas=0.23.4=py36hf8a1672_0
- pycparser=2.19=py_0
- pyopenssl=18.0.0=py36_1000
- pyparsing=2.2.0=py_1
- pysocks=1.6.8=py36_1002
- python=3.6.6=h4a56312_1003
- pytz=2018.5=py_0
- selenium=3.141.0=py36h470a237_0
- tbb=2018_20171205=0
- urllib3=1.24.1=py36_1000
- cvxcanon=0.1.1=py36_0
- cvxpy=1.0.6=py36_0
- ecos=2.0.5=py36hf9b3073_0
- multiprocess=0.70.4=py36_0
- scs=1.2.6=py36_0
- appnope=0.1.0=py36hf537a9a_0
- backcall=0.1.0=py36_0
- blas=1.0=mkl
- cvxopt=1.2.0=py36hb579ef3_0
- decorator=4.3.0=py36_0
- dill=0.2.8.2=py36_0
- dsdp=5.8=hb579ef3_0
- fastcache=1.0.2=py36h1de35cc_2
- gsl=2.4=h1de35cc_4
- intel-openmp=2019.0=117
- ipykernel=4.8.2=py36_0
- ipython=6.4.0=py36_0
- ipython_genutils=0.2.0=py36h241746c_0
- jedi=0.12.0=py36_1
- jupyter_client=5.2.3=py36_0
- jupyter_core=4.4.0=py36h79cf704_0
- libcxx=4.0.1=h579ed51_0
- libcxxabi=4.0.1=hebd6815_0
- libedit=3.1.20170329=hb402a30_2
- libffi=3.2.1=h475c297_4
- libgcc=4.8.5=hdbeacc1_10
- libgfortran=3.0.1=h93005f0_2
- libopenblas=0.3.3=hdc02c5d_2
- libsodium=1.0.16=h3efe00b_0
- mkl=2018.0.3=1
- ncurses=6.1=h0a44026_0
- numpy=1.15.4=py36h6a91979_0
- numpy-base=1.15.4=py36h8a80b8c_0
- parso=0.2.1=py36_0
- pexpect=4.6.0=py36_0
- pickleshare=0.7.4=py36hf512f8e_0
- pip=10.0.1=py36_0
- prompt_toolkit=1.0.15=py36haeda067_0
- ptyprocess=0.5.2=py36he6521c3_0
- pygments=2.2.0=py36h240cd3f_0
- python-dateutil=2.7.3=py36_0
- pyzmq=17.0.0=py36h1de35cc_1
- readline=7.0=hc1231fa_4
- scikit-learn=0.20.1=py36h4f467ca_0
- scipy=1.1.0=py36h28f7352_1
- setuptools=39.2.0=py36_0
- simplegeneric=0.8.1=py36_2
- six=1.11.0=py36h0e22d5e_1
- suitesparse=5.2.0=he235d88_0
- toolz=0.9.0=py36_0
- tornado=5.0.2=py36_0
- traitlets=4.3.2=py36h65bd3ce_0
- wcwidth=0.1.7=py36h8c6ec74_0
- wheel=0.31.1=py36_0
- xz=5.2.4=h1de35cc_4
- zeromq=4.2.5=h378b8a2_0
- zlib=1.2.11=hf3cbc9b_2
- pip:
- absl-py==0.2.2
- astor==0.6.2
- bleach==1.5.0
- cython==0.28.3
- gast==0.2.0
- grpcio==1.12.1
- h5py==2.8.0
- html5lib==0.9999999
- keras==2.2.0
- keras-applications==1.0.2
- keras-preprocessing==1.0.1
- markdown==2.6.11
- pillow==5.1.0
- protobuf==3.5.2.post1
- pyramid-arima==0.6.5
- pyyaml==3.12
- sklearn==0.0
- statsmodels==0.9.0
- tensorboard==1.8.0
- tensorflow==1.8.0
- termcolor==1.1.0
- tqdm==4.23.4
- werkzeug==0.14.1
- xlrd==1.1.0
prefix: /Users/username/anaconda2/envs/py36
命令行
conda env create -f py36.yml
Collecting package metadata: done
Solving environment: failed
ResolvePackageNotFound:
- libgfortran==3.0.1=h93005f0_2
- pyzmq==17.0.0=py36h1de35cc_1
- python==3.6.6=h4a56312_1003
- prompt_toolkit==1.0.15=py36haeda067_0
- libiconv==1.15=h1de35cc_1004
- sqlite==3.25.3=ha441bb4_0
- six==1.11.0=py36h0e22d5e_1
- cryptography==2.3.1=py36hdbc3d79_1000
- openssl==1.0.2p=h1de35cc_1002
- libxml2==2.9.8=hf14e9c8_1005
- libcxxabi==4.0.1=hebd6815_0
- matplotlib==2.2.3=py36h0e0179f_0
- ptyprocess==0.5.2=py36he6521c3_0
- readline==7.0=hc1231fa_4
- libedit==3.1.20170329=hb402a30_2
- libgcc==4.8.5=hdbeacc1_10
- xz==5.2.4=h1de35cc_4
- pickleshare==0.7.4=py36hf512f8e_0
- appnope==0.1.0=py36hf537a9a_0
- scipy==1.1.0=py36h28f7352_1
- cvxopt==1.2.0=py36hb579ef3_0
- jupyter_core==4.4.0=py36h79cf704_0
- dsdp==5.8=hb579ef3_0
- ncurses==6.1=h0a44026_0
- tk==8.6.8=ha441bb4_0
- ecos==2.0.5=py36hf9b3073_0
- wcwidth==0.1.7=py36h8c6ec74_0
- scikit-learn==0.20.1=py36h4f467ca_0
- libopenblas==0.3.3=hdc02c5d_2
- traitlets==4.3.2=py36h65bd3ce_0
- libsodium==1.0.16=h3efe00b_0
- ipython_genutils==0.2.0=py36h241746c_0
- fastcache==1.0.2=py36h1de35cc_2
- numpy==1.15.4=py36h6a91979_0
- numpy-base==1.15.4=py36h8a80b8c_0
- zlib==1.2.11=hf3cbc9b_2
- libffi==3.2.1=h475c297_4
- pygments==2.2.0=py36h240cd3f_0
- icu==58.2=h0a44026_1000
- gsl==2.4=h1de35cc_4
- libcxx==4.0.1=h579ed51_0
- suitesparse==5.2.0=he235d88_0
- zeromq==4.2.5=h378b8a2_0
解决方案
不,PyPI 不是问题。相反,它失败了,因为 YAML 包含特定于平台的构建约束,但是您正在跨平台传输。具体来说,检查失败包(例如 )上的构建号six=py36h0e22d5e_1
,我可以看到它们对应于来自osx-64
平台的包,但是您正试图在linux-64
平台上安装,因此构建约束是无法解决的。
省略构建信息
最简单的解决方案是从环境定义导出中省略构建信息。
conda env export -n py36 -f py36.yml --no-builds
如果某些软件包无法linux-64
通过 Conda 获得,则仍然存在问题。如果是这种情况,您可能需要查找其他渠道(或检查 PyPI)、切换版本或完全删除依赖项。不过,大多数包看起来都是标准的。
不是那么重要,但您可以安全地cvxgrp
从您的频道中删除。该频道仅提供过时版本cvxopt
且仅适用于osx-64
.
仅明确规范
另一个定义更为松散的选项是仅输出 Conda 所指的显式规范。这些仅指示用户明确要求的那些要求。这包括包,但也捕获用户在某些时候提供的任何版本约束等。
conda env export -n py36 -f py36.yml --from-history
这里的优点是任何特定于平台的依赖项都将被忽略。
推荐阅读
- ios - 用户从 iPhone/iPad(任何浏览器)专门访问时无法加载网站,甚至无法留下服务器日志
- windows - Windows OpenFile 标志
- rubygems - 一个人如何一起开发一对宝石,一个使用另一个?
- angular - Angular 2 / RxJS - http返回400时订阅中断
- python - 在 django ORM 中使用过滤器获取数据
- frama-c - 使用 CVC4 证明器时,frama-c wp 插件语法错误
- git - GIT 允许合并过时的分支
- sql-server - SQL Server xp_cmdshell query: add variables to command
- bash - git commit 失败的原因(以非零退出)
- javascript - 复选框选中 javascript