我已经安装并使用了Anaconda Python发行版,我已经开始使用Anaconda(Conda)环境了 . 我可以使用标准的 conda install...
命令将包中的包放入我的环境中,但是要使用外部的任何东西(例如Flask-WTF,flask-sqlalchemy和alembic),我需要在活动环境中使用 pip install
. 但是,当我查看环境的内容时,无论是在目录中,还是使用 conda list
,这些 pip install
ed包都不会显示出来 .
使用 pip freeze
和 pip list
只列出我安装的每个包 .
有没有办法跟踪我的每个Anaconda env
(安装了 pip
和 conda
)的内容?
9 回答
这就是我写Picky的原因:http://picky.readthedocs.io/
它是一个python包,用于跟踪virtualenvs和conda envs中使用pip或conda安装的软件包 .
conda-env现在自动执行此操作(如果pip是使用conda安装的) .
您可以使用用于迁移环境的导出工具来查看其工作原理:
该文件将列出conda包和pip包:
如果您希望继续导出环境,请将
environment.yml
移动到新主机并运行:conda
只会跟踪它安装的软件包 . 并且pip
将为您提供使用pip
安装程序本身安装的软件包,或者他们在setup.py
中使用setuptools
,因此conda构建生成了egg信息 . 所以你基本上有三种选择 .您可以获取
conda list
和pip freeze
的并集,并使用_15973000_(在conda list
中显示)使用conda
软件包管理器安装的软件包以及使用pip
(在pip freeze
中显示但在conda list
中未显示)中安装的软件包pip
.仅在您的环境中安装
python
,pip
和distribute
包,并使用pip
管理所有内容 . (如果你在Windows上,这不是那么简单......)构建您自己的
conda
包,并使用conda
管理所有内容 .我个人会推荐第三个选项,因为它很容易构建
conda
包 . 在continuum的github帐户上有一个git的示例配方存储库 . 但它通常归结为:要不就:
此外,当您构建它们一次时,您可以将它们上传到https://binstar.org/并从那里安装 .
然后你将使用
conda
管理所有内容 .conda(new-pypi-install)的一个分支增加了与pip和PyPI的更好集成 . 特别是conda list也将显示pip安装的包,conda install将首先尝试查找conda包并且失败将使用pip来安装包 .
这个分支计划在本周晚些时候合并,因此conda 2.1版将与conda进行更好的pip集成 .
我跟着@Viktor Kerkez的回答并取得了不同程度的成功 . 我发现有时这个配方
看起来一切正常但我无法成功导入PACKAGE . 最近我在_1597318上询问了这个问题,并从@Travis Oliphant本人那里了解了使用conda来构建和管理Anaconda不附带的软件包的最佳方法 . 你可以阅读这个帖子here,但我'll describe the approach below to hopefully make the answers to the OP'的问题更完整......
示例:我将使用conda 2.2.5在Windows上安装优秀的prettyplotlib package .
1a)
conda build --build-recipe prettyplotlib
在构建的最终TEST部分之前,您将看到构建消息看起来都很好 . 我看到了这个错误
编辑此部分以删除前面带有的空行 - 并删除冗余的prettyplotlib行 . 在撰写本文时,我发现我需要编辑大多数这样的meta.yaml文件,用于我用conda安装的外部包,这意味着有一个空白的导入行导致错误以及给定包的冗余导入 .
1c) 从1a重新运行命令,这次应完成输出错误 . 在......的最后如果要将构建上传到binstar,则会询问您的构建 . 我输入了No然后看到了这条消息:
tar.bz2文件是您现在需要实际安装的版本 .
2)
conda install C:\Anaconda\conda-bld\win-64\prettyplotlib-0.1.3-py27_0.tar.bz2
按照这些步骤,我已成功使用conda来安装许多Anaconda未附带的软件包 . 以前,我已经使用pip安装了其中的一些,所以在使用conda安装PACKAGE之前我做了
pip uninstall PACKAGE
. 使用conda,我现在可以使用单一方法管理(几乎)所有软件包,而不是使用conda,pip,easy_install和python setup.py install安装的东西 .对于上下文,我认为@Travis Oliphant的这个recent blog post将对像我这样的人有所帮助,他们不会欣赏强大的Python包装中的所有东西,但肯定会喜欢什么东西"just works" . 康达似乎是一个很好的前进方式......
我认为这里缺少的是你做的时候:
要使用setup.py安装本地软件包,它会安装一个对所有使用相同版本的python的conda env都可见的软件包 . 注意我正在使用pda的conda版本!
例如,如果我使用python2.7,它将本地包放在这里:
/usr/local/anaconda/lib/python2.7/site-packages
如果我稍后用python = 2.7(=默认值)创建一个新的conda env:
然后做:
但是,如果我这样做:
所以在这种情况下,conda不知道pip包,但是包可用于python .
但是,如果我在创建(并激活)新的conda env之后安装本地软件包(再次使用pip),现在conda会看到它:
所以我认为conda和pip之间的交互存在一些问题 - 即,使用pip从一个conda env中安装本地包使得该包可用(但不能通过conda列表看到)到同一个python版本的所有其他conda envs .
conda env export
列出环境中的所有conda和pip包 .conda-env
必须安装在conda根目录(conda install -c conda conda-env
)中 .要编写描述当前环境的
environment.yml
文件:参考文献:
https://github.com/conda/conda-env/
https://github.com/conda/conda-env/issues/12
在'pip'命令之前,我通常在'bin / pip'文件夹前面添加要安装软件包的特定环境 . 例如,如果要在环境py34中安装pymc3,则应使用以下命令:
您基本上只需要找到环境'bin / pip'文件夹的正确路径,并将其放在install命令之前 .
我的
which pip
显示以下路径:因此,使用
pip install <package-name>
安装的任何软件包都必须在使用以下方法导出列表时反映在软件包列表中:但是,我没有 . 所以,我使用了以下命令,如其他几个人所建议的那样:
现在,我可以看到
all-packages.yml
文件中的所有包 .