繁体   English   中英

在Anaconda中安装Python模块的开发版本的最佳实践是什么?

[英]What's the best practice for installing development versions of Python modules in Anaconda?

我在Mac上使用Anaconda python发行版。 我想在Github上使用最新版本的matplotlib源代码 ,进行一些更改,看看它是如何运行的。 但大多数时候我只想使用Anaconda Python附带的matplotlib的正常版本,所以我想要一种方便来回切换的方法。

matplotlib文档对分支和pull-request工作流程有一个很好的描述,但我不清楚我是如何实际安装和使用matplotlib的开发版本的,这将保留我正在运行的Python实现。

我的猜测是我想要建立一个包含最新matplotlib版本及其依赖关系的环境,并在该环境和普通root环境之间切换。 但是当我使用python setup.py develop来安装matplotlib的开发版本时,它似乎安装到两个环境中。

那么,使用GitHub的Python包的开发版本的最佳实践是什么?

正如您在问题中提到的, conda env能够为您想要处理的任何软件包的开发版本维护单独的Python环境。


我不太清楚为什么你发现python setup.py develop正在将matplotlib的dev版本安装到你的root环境中。 也许您创建了一个新环境,但在安装matplotlib的开发版本之前没有激活它? 例如:

~$ conda create --name matplotlib-dev --clone root
Fetching package metadata: ....
src_prefix: '/home/alistair/anaconda'
dst_prefix: '/home/alistair/anaconda/envs/matplotlib-dev'
Packages: 165
Files: 32
Linking packages ...
[      COMPLETE      ]|#####################################################| 100%
#
# To activate this environment, use:
# $ source activate matplotlib-dev
#
# To deactivate this environment, use:
# $ source deactivate
#
~$ conda info --envs 
# conda environments:
#
matplotlib-dev           /home/alistair/anaconda/envs/matplotlib-dev
root                  *  /home/alistair/anaconda

此时我已经创建了一个matplotlib-dev环境,但我还没有激活它,所以安装任何新包仍然会修改我的root环境。

~$ source activate matplotlib-dev
discarding /home/alistair/anaconda/bin from PATH
prepending /home/alistair/anaconda/envs/matplotlib-dev/bin to PATH

(matplotlib-dev)~$ conda info --envs 
# conda environments:
#
matplotlib-dev        *  /home/alistair/anaconda/envs/matplotlib-dev
root                     /home/alistair/anaconda

在任何情况下, 不再推荐使用setuptools(即python setup.py installpython setup.py develop,未来的numpy等版本可能不支持

首选方法是使用pip install <path>pip install -e <path>如果你想要一个“可编辑”的安装(类似于python setup.py develop给你的):

(matplotlib-dev)~$ pip install -e git+git://github.com/matplotlib/matplotlib.git#egg=matplotlib-dev
Obtaining matplotlib from git+git://github.com/matplotlib/matplotlib.git#egg=matplotlib-dev
  Cloning git://github.com/matplotlib/matplotlib.git to ./src/matplotlib
...
Installing collected packages: matplotlib
  Running setup.py develop for matplotlib
Successfully installed matplotlib-1.5.0+337.g595868a

(matplotlib-dev)~$ python -c "import matplotlib; print(matplotlib.__version__)"
1.5.0.post337+g595868a

(matplotlib-dev)~$ source deactivate
discarding /home/alistair/anaconda/envs/matplotlib-dev/bin from PATH

~$ python -c "import matplotlib; print(matplotlib.__version__)"
1.4.3

注意./src/matplotlib-dev #egg= part ,它告诉pip将源安装到./src/matplotlib-dev 如果您已经拥有了当前正在处理的本地副本,那么您也可以将路径pip传递到本地源目录,而不是git URI。

也应该可以使用conda develop <path>而不是pip install -e <path> ,尽管conda似乎不像pip那样提供集成的VCS支持。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM