问题:如何在Anaconda(Conda)环境中跟踪点子安装的软件包?
我已经安装并一直在使用Anaconda Python发行版,并且已经开始使用Anaconda(Conda)环境。我可以使用标准conda install...
命令将分发包中的软件包放入我的环境中,但要使用其他pip install
在活动环境中需要使用的东西(例如Flask-WTF,flask-sqlalchemy和alembic)。但是,当我查看环境的内容时,无论是在目录中还是使用conda list
这些pip install
ed包,都不会显示。
使用pip freeze
并pip list
仅列出我曾经安装的每个软件包。
有没有办法跟踪我的每个Anaconda env
(安装pip
和conda
安装的)中的物品?
回答 0
conda-env现在可以自动执行此操作(如果pip与conda一起安装)。
您可以使用用于迁移环境的导出工具来查看其工作原理:
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
conda
将仅跟踪其安装的软件包。并pip
会为您提供使用pip
安装程序本身安装的软件包,或setuptools
在setup.py
conda构建中使用的软件包生成的egg信息。因此,您基本上有三个选择。
你可以采取的联合
conda list
与pip freeze
和管理使用安装的软件包conda
(在这个节目conda list
用)conda
包管理器,并确保安装与个位pip
(即秀pip freeze
,但不是在conda list
)与pip
。仅在和环境中安装
python
,pip
然后使用distribute
打包和管理所有内容pip
。(如果您使用的是Windows,那么这并不是一件容易的事…)构建自己的
conda
软件包,并使用进行管理conda
。
我个人推荐第三个选项,因为它很容易构建conda
软件包。在连续体的github帐户上有一个示例食谱的git存储库。但通常可以归结为:
conda skeleton pypi PACKAGE
conda build PACKAGE
要不就:
conda pipbuild PACKAGE
同样,一旦构建它们,您就可以将它们上传到https://binstar.org/并从那里安装。
然后,您将使用进行所有管理conda
。
回答 2
有一个conda(new-pypi-install)分支,它可以更好地与pip和PyPI集成。特别是conda列表还将显示pip安装的软件包,conda安装将首先尝试查找conda软件包,如果失败,将使用pip安装软件包。
该分支计划于本周晚些时候合并,以便conda 2.1版将更好地与conda进行点集成。
回答 3
我遵循@Viktor Kerkez的回答,并取得了不同的成功。我发现有时候这个食谱
康达骨架pypi包装
康达构建包
看起来一切正常,但我无法成功导入PACKAGE。最近,我在Anaconda用户组上询问了此问题,并从@Travis Oliphant自己那里听说了使用conda构建和管理Anaconda附带的软件包的最佳方法。您可以在此处阅读此主题,但我将在下面描述该方法,以期使OP的问题的答案更加完整…
示例:我将使用conda 2.2.5在Windows上安装出色的prettyplotlib软件包。
1a) conda build --build-recipe prettyplotlib
在构建的最后“测试”部分之前,您将看到构建消息看起来都不错。我看到了这个错误
文件“ C:\ Anaconda \ conda-bld \ test-tmp_dir \ run_test.py”,第23行导入None语法错误:无法分配为None测试失败:prettyplotlib-0.1.3-py27_0
1b)进入/ conda-recipes / prettyplotlib并编辑meta.yaml文件。当前,像在步骤1a中一样设置的软件包会导致yaml文件在该test
部分中出错。例如,这是我的寻找方式prettyplotlib
test: # Python imports imports:
-
- prettyplotlib
- prettyplotlib
编辑此部分以删除-开头的空白行,并删除多余的prettyplotlib行。在撰写本文时,我发现我需要为使用conda安装的外部软件包编辑这样的大多数meta.yaml文件,这意味着有空白的导入行会导致错误以及给定软件包的冗余导入。
1c)从1a重新运行命令,这一次应该正确完成。在构建结束时,系统会询问您是否要将构建上传到binstar。我输入“否”,然后看到以下消息:
如果您想稍后将此包上传到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安装了其中的一些工具,因此pip uninstall PACKAGE
在使用conda安装PACKAGE之前,我已经完成了安装。使用conda,我现在可以通过一种方法来管理(几乎)所有软件包,而无需将conda,pip,easy_install和python setup.py安装混合在一起。
对于上下文,我认为@Travis Oliphant的最新博客文章将对像我这样的人有所帮助,他们不喜欢使用健壮的Python包装的所有内容,但可以肯定当东西“起作用时”。康达似乎是前进的好方法…
回答 4
这就是为什么我写Picky的原因:http : //picky.readthedocs.io/
这是一个python软件包,可跟踪在virtualenvs和conda envs中随pip或conda安装的软件包。
回答 5
我认为这里缺少的是:
>pip install .
要使用setup.py安装本地软件包,它将安装一个对使用相同版本 python的所有 conda env 可见的软件包。注意我正在使用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)后,我已经创建(激活)新康达ENV,现在畅达看到它:
(new)>conda list // sees that the package is there and was installed by pip
因此,我认为conda和pip之间的交互存在一些问题-即,使用pip从一个conda env中安装本地软件包会使该软件包可用于同一python版本的所有其他conda env(但不能通过conda列表看到)。
回答 6
conda env export
列出环境中的所有conda和pip软件包。conda-env
必须安装在conda根目录(conda install -c conda conda-env
)中。
编写environment.yml
描述当前环境的文件:
conda env export > environment.yml
参考文献:
回答 7
我通常会在“ pip”命令之前为要安装软件包的特定环境添加“ bin / pip”文件夹前缀。例如,如果要在环境py34中安装pymc3,则应使用以下命令:
~/anaconda/envs/py34/bin/pip install git+https://github.com/pymc-devs/pymc3
基本上,您只需要找到环境“ bin / pip”文件夹的正确路径,并将其放在install命令之前即可。
回答 8
我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
文件中的所有软件包。
回答 9
您可以先在conda环境中安装以下给定命令开始:
conda install pip
然后安装环境中所需的所有pip软件包。
安装所有conda和pip软件包以导出环境后,请使用:
conda env export -n <env-name> > environment.yml
这将在文件夹中创建所需的文件