Python 如何在virtualenv中导入Anaconda environment.yml?
我只需要在VirtualEnvironment中导入Anaconda.yml环境文件 我之所以需要这样做,是因为在nVidia Jetson TX2开发板上,我无法安装和运行Anaconda发行版(它与ARM体系结构不兼容)。相反,Virtualenv和Jupyter的安装和运行都完美无缺 .yml文件如下所示:Python 如何在virtualenv中导入Anaconda environment.yml?,python,anaconda,yaml,virtualenv,jupyter,Python,Anaconda,Yaml,Virtualenv,Jupyter,我只需要在VirtualEnvironment中导入Anaconda.yml环境文件 我之所以需要这样做,是因为在nVidia Jetson TX2开发板上,我无法安装和运行Anaconda发行版(它与ARM体系结构不兼容)。相反,Virtualenv和Jupyter的安装和运行都完美无缺 .yml文件如下所示: name: tfdeeplearning channels: - defaults dependencies: - bleach=1.5.0=py35_0 - certif
name: tfdeeplearning
channels:
- defaults
dependencies:
- bleach=1.5.0=py35_0
- certifi=2016.2.28=py35_0
- colorama=0.3.9=py35_0
- cycler=0.10.0=py35_0
- decorator=4.1.2=py35_0
- entrypoints=0.2.3=py35_0
- html5lib=0.9999999=py35_0
- icu=57.1=vc14_0
- ipykernel=4.6.1=py35_0
- ipython=6.1.0=py35_0
- ipython_genutils=0.2.0=py35_0
- ipywidgets=6.0.0=py35_0
- jedi=0.10.2=py35_2
- jinja2=2.9.6=py35_0
- jpeg=9b=vc14_0
- jsonschema=2.6.0=py35_0
- jupyter=1.0.0=py35_3
- jupyter_client=5.1.0=py35_0
- jupyter_console=5.2.0=py35_0
- jupyter_core=4.3.0=py35_0
- libpng=1.6.30=vc14_1
- markupsafe=1.0=py35_0
- matplotlib=2.0.2=np113py35_0
- mistune=0.7.4=py35_0
- mkl=2017.0.3=0
- nbconvert=5.2.1=py35_0
- nbformat=4.4.0=py35_0
- notebook=5.0.0=py35_0
- numpy=1.13.1=py35_0
- openssl=1.0.2l=vc14_0
- pandas=0.20.3=py35_0
- pandocfilters=1.4.2=py35_0
- path.py=10.3.1=py35_0
- pickleshare=0.7.4=py35_0
- pip=9.0.1=py35_1
- prompt_toolkit=1.0.15=py35_0
- pygments=2.2.0=py35_0
- pyparsing=2.2.0=py35_0
- pyqt=5.6.0=py35_2
- python=3.5.4=0
- python-dateutil=2.6.1=py35_0
- pytz=2017.2=py35_0
- pyzmq=16.0.2=py35_0
- qt=5.6.2=vc14_6
- qtconsole=4.3.1=py35_0
- requests=2.14.2=py35_0
- scikit-learn=0.19.0=np113py35_0
- scipy=0.19.1=np113py35_0
- setuptools=36.4.0=py35_1
- simplegeneric=0.8.1=py35_1
- sip=4.18=py35_0
- six=1.10.0=py35_1
- testpath=0.3.1=py35_0
- tk=8.5.18=vc14_0
- tornado=4.5.2=py35_0
- traitlets=4.3.2=py35_0
- vs2015_runtime=14.0.25420=0
- wcwidth=0.1.7=py35_0
- wheel=0.29.0=py35_0
- widgetsnbextension=3.0.2=py35_0
- win_unicode_console=0.5=py35_0
- wincertstore=0.2=py35_0
- zlib=1.2.11=vc14_0
- pip:
- ipython-genutils==0.2.0
- jupyter-client==5.1.0
- jupyter-console==5.2.0
- jupyter-core==4.3.0
- markdown==2.6.9
- prompt-toolkit==1.0.15
- protobuf==3.4.0
- tensorflow==1.3.0
- tensorflow-tensorboard==0.1.6
- werkzeug==0.12.2
- win-unicode-console==0.5
prefix: C:\Users\Marcial\Anaconda3\envs\tfdeeplearning
pip可以从
requirements.txt
文件安装,该文件如下所示
序列中的项是键的值
pip
在.yml
文件中,但不带破折号:
ipython-genutils==0.2.0
jupyter-client==5.1.0
jupyter-console==5.2.0
jupyter-core==4.3.0
markdown==2.6.9
prompt-toolkit==1.0.15
protobuf==3.4.0
tensorflow==1.3.0
tensorflow-tensorboard==0.1.6
werkzeug==0.12.2
win-unicode-console==0.5
假设文件的结尾实际上看起来像:
.
.
.
- wincertstore=0.2=py35_0
- zlib=1.2.11=vc14_0
- pip:
- ipython-genutils==0.2.0
- jupyter-client==5.1.0
- jupyter-console==5.2.0
- jupyter-core==4.3.0
- markdown==2.6.9
- prompt-toolkit==1.0.15
- protobuf==3.4.0
- tensorflow==1.3.0
- tensorflow-tensorboard==0.1.6
- werkzeug==0.12.2
- win-unicode-console==0.5
prefix: C:\Users\Marcial\Anaconda3\envs\tfdeeplearning
(即,pip条目缩进以使其成为有效的YAML文件),
名为anaconda project.yml
,您可以执行以下操作:
import ruamel.yaml
yaml = ruamel.yaml.YAML()
data = yaml.load(open('anaconda-project.yml'))
requirements = []
for dep in data['dependencies']:
if isinstance(dep, str):
package, package_version, python_version = dep.split('=')
if python_version == '0':
continue
requirements.append(package + '==' + package_version)
elif isinstance(dep, dict):
for preq in dep.get('pip', []):
requirements.append(preq)
with open('requirements.txt', 'w') as fp:
for requirement in requirements:
print(requirement, file=fp)
生成一个requirement.txt
文件,可用于:
pip install -r requirements.txt
请注意:
- PyPI可能无法提供非pip包
- 当前的pip版本是18.1,需求列表中的版本是旧版本
- 根据官方YAML FAQ,使用
作为 只有在建议的.yml
扩展名。在现代文件系统上,情况并非如此。我 我不知道水蟒是否像往常一样不符合规定,或者你 在这件事上你可以选择.yaml
- 自从几年前引入双轮以来,许多 支持它们的软件包通常(对我来说总是)是可能的 只需使用VirtualNVS和pip。从而规避了 Anaconda未100%合规且未 最新的所有软件包(与PyPI相比)
-pip
引起。你确定这个值不应该缩进吗?很好的建议,我为它创建了一个要点: