我已经安装并且一直在使用Anaconda Python发行版,我已经开始使用Anaconda(Conda)环境了。我可以使用标准的conda install...
命令将包中的包放到我的环境中,但是要使用外面的任何东西(例如Flask-WTF,flask-sqlalchemy和alembic),我需要在pip install
中使用conda list
活跃的环境。但是,当我查看环境内容时,无论是在目录中,还是使用pip install
,这些pip freeze
ed包都不会显示。
使用pip list
和env
只列出我安装过的所有软件包。
有没有办法跟踪我的每个Anaconda pip
(安装了conda
和{{1}})的内容?
答案 0 :(得分:103)
conda-env现在自动执行此操作(如果使用conda安装了pip)。
您可以使用用于迁移环境的导出工具来了解其工作原理:
conda env export -n <env-name> > environment.yml
该文件将列出conda包和pip包:
name: stats
channels:
- javascript
dependencies:
- python=3.4
- bokeh=0.9.2
- numpy=1.9.*
- nodejs=0.10.*
- flask
- pip:
- Flask-Testing
如果您希望继续导出环境,请将environment.yml
移至新主机并运行:
conda env create -f path/to/environment.yml
答案 1 :(得分:64)
conda
只会跟踪它安装的软件包。 pip
将为您提供使用pip
安装程序本身安装的软件包,或者在setuptools
中使用setup.py
的软件包,以便生成egg信息。所以你基本上有三种选择。
您可以使用conda list
和pip freeze
的联合,并使用conda
(conda list
中显示的)管理使用conda
安装的软件包{1}}软件包管理器以及pip
安装的软件包管理器(pip freeze
但不在conda list
中)pip
。
仅在您的环境中安装python
,pip
和distribute
个软件包,并使用pip
管理所有内容。 (如果你在Windows上,这不是那么简单......)
构建您自己的conda
软件包,并使用conda
管理所有内容。
我个人推荐第三个选项,因为构建conda
包非常容易。在continuum的github帐户上有一个git的示例配方存储库。但它通常归结为:
conda skeleton pypi PACKAGE
conda build PACKAGE
或只是:
conda pipbuild PACKAGE
此外,当您构建一次时,可以将它们上传到https://binstar.org/,然后从那里安装。
然后,您将使用conda
管理所有内容。
答案 2 :(得分:23)
conda的分支(new-pypi-install)增加了与pip和PyPI的更好集成。特别是conda list也将显示pip安装包,conda install将首先尝试查找conda包,并且失败将使用pip来安装包。
这个分支计划在本周晚些时候合并,因此conda的2.1版将与conda进行更好的pip整合。
答案 3 :(得分:16)
我跟着@Viktor Kerkez的回答并取得了不同程度的成功。我发现有时这个配方
conda skeleton pypi PACKAGE
conda build PACKAGE
看起来一切正常但我无法成功导入PACKAGE。最近我在Anaconda user group上询问了这个问题,并从@Travis Oliphant本人那里了解了使用conda构建和管理Anaconda不附带的软件包的最佳方法。你可以阅读这个帖子here,但我将描述下面的方法,希望能够更完整地回答OP的问题......
示例:我将使用conda 2.2.5在Windows上安装优秀的prettyplotlib package。
1a) conda build --build-recipe prettyplotlib
在构建的最终TEST部分之前,您将看到构建消息看起来都很好。我看到了这个错误
文件“C:\ Anaconda \ conda-bld \ test-tmp_dir \ run_test.py”,第23行 import None SyntaxError:无法分配给无TESTS FAILED:prettyplotlib-0.1.3-py27_0
1b)进入/ conda-recipes / prettyplotlib并编辑meta.yaml文件。目前,正如步骤1a中那样设置的包导致yaml文件在test
部分中出错。例如,以下是我如何查找prettyplotlib
test: # Python imports imports:
-
- prettyplotlib
- prettyplotlib
编辑此部分以删除前面带有的空行 - 并删除冗余的prettyplotlib行。在撰写本文时,我发现我需要编辑这样的大多数meta.yaml文件,用于我用conda安装的外部包,这意味着有一个空白的导入行导致错误以及给定包的冗余导入
1c)从1a重新运行命令,这次应完成输出错误。在构建结束时,系统会询问您是否要将构建上传到binstar。我输入了No然后看到了这条消息:
如果您想稍后将此软件包上传到binstar.org,请输入:
$ binstar上传C:\ Anaconda \ conda-bld \ win-64 \ prettyplotlib-0.1.3-py27_0.tar.bz2
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包装中的所有东西,但当“东西正常”时肯定会欣赏。康达似乎是一个很好的前进方式......
答案 4 :(得分:9)
这就是我写Picky的原因:http://picky.readthedocs.io/
这是一个python包,用于跟踪在virtualenvs和conda envs中使用pip或conda安装的软件包。
答案 5 :(得分:3)
我认为这里缺少的是你做的时候:
>pip install .
使用setup.py安装本地软件包, 它会安装一个对所有使用的conda env可见的包 与python相同的版本。注意我使用的是conda版本的pip!
例如,如果我使用python2.7,则将本地包放在此处:/usr/local/anaconda/lib/python2.7/site-packages
如果我稍后用python = 2.7(=默认值)创建一个新的conda env:
>conda create --name new
>source activate new
然后做:
(new)>conda list // empty - conda is not aware of any packages yet
但是,如果我这样做:
(new)>pip list // the local package installed above is present
所以在这种情况下,conda不知道pip包,但是包可用于python。
但是,如果我在之后安装本地软件包(再次使用pip)我创建(并激活)了新的conda env,现在 conda会看到它:
(new)>conda list // sees that the package is there and was installed by pip
所以我认为conda和pip之间的交互存在一些问题 - 即,使用pip从一个conda env中安装本地包使得该包可用(但不能通过conda列表看到)到所有其他conda envs python版本。
答案 6 :(得分:2)
conda env export
列出了环境中的所有conda和pip包。必须在conda根目录(conda-env
)中安装conda install -c conda conda-env
。
编写描述当前环境的environment.yml
文件:
conda env export > environment.yml
参考文献:
答案 7 :(得分:2)
我通常在&#39; bin / pip&#39;前加上前缀。要在“点”之前安装包的特定环境的文件夹命令。例如,如果要在环境py34中安装pymc3,则应使用以下命令:
~/anaconda/envs/py34/bin/pip install git+https://github.com/pymc-devs/pymc3
您基本上只需找到适合您环境的正确途径&#39; bin / pip&#39;文件夹并将其放在安装命令之前。
答案 8 :(得分:1)
您可以首先在conda环境中安装以下给定命令:
conda install pip
接着安装环境中所需的所有pip软件包。
在安装所有conda和pip软件包以导出环境后,请使用:
conda env export -n <env-name> > environment.yml
这将在文件夹中创建所需的文件
答案 9 :(得分:0)
我的which pip
显示以下路径:
$ which pip
/home/kmario23/anaconda3/bin/pip
因此,使用pip install <package-name>
安装的任何软件包都必须在使用以下命令导出列表时反映在软件包列表中:
$ conda list --export > conda_list.txt
但是,我没有。所以,我使用了以下几个命令建议的命令:
# get environment name by
$ conda-env list
# get list of all installed packages by (conda, pip, etc.,)
$ conda-env export -n <my-environment-name> > all_packages.yml
# if you haven't created any specific env, then just use 'root'
现在,我可以看到all-packages.yml
文件中的所有软件包。
答案 10 :(得分:0)
使用您环境的 pip 安装软件包
~/anaconda3/envs/<ENV_NAME_HERE>/bin/pip install <PACKAGE_NAME>
当您使用 conda list