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

什么';在Anaconda中安装Python模块开发版本的最佳实践是什么?,python,git,anaconda,distutils,conda,Python,Git,Anaconda,Distutils,Conda,我正在Mac上使用Anaconda python发行版。我想使用的最新版本,做一些更改,看看它是如何运行的。但大多数时候,我只想使用Anaconda Python附带的matplotlib的正常版本,因此我想找到一种可以轻松来回切换的方法 matplotlib文档对的描述很好,但我不清楚我如何实际安装和使用matplotlib的开发版本,以保护我的Python实现 我的猜测是,我想设置一个包含最新matplotlib版本及其依赖项的环境,并在该环境和正常的根环境之间切换。但是当我使用python

我正在Mac上使用Anaconda python发行版。我想使用的最新版本,做一些更改,看看它是如何运行的。但大多数时候,我只想使用Anaconda Python附带的matplotlib的正常版本,因此我想找到一种可以轻松来回切换的方法

matplotlib文档对的描述很好,但我不清楚我如何实际安装和使用matplotlib的开发版本,以保护我的Python实现

我的猜测是,我想设置一个包含最新matplotlib版本及其依赖项的环境,并在该环境和正常的
环境之间切换。但是当我使用
python setup.py develope
安装matplotlib的开发版本时,它似乎同时安装到两种环境中


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

正如您在问题中提到的,能够为您想要使用的任何包的开发版本维护单独的Python环境


我不太清楚为什么您会发现
python setup.py develope
正在将matplotlib的开发版本安装到您的
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 install
python setup.py develope
)都是,并且

首选的方法是使用
pip安装
,或者
pip安装-e
,如果您需要安装(类似于
python setup.py develope
提供的内容):

注意,它告诉
pip
将源代码安装到
/src/matplotlib dev
。如果您已经获得了当前正在处理的本地副本,您还可以传递到本地源目录的路径,而不是
git
URI


也可以使用而不是
pip安装-e
,尽管
conda
似乎不像
pip
那样提供集成VCS支持。

感谢这些建议!我从GitHub尝试了“pip安装-e”方法,我认为它是有效的。我现在意识到我不应该安装这个软件包,而是在我的脚本顶部使用sys.path.insert指定要使用哪个版本的matplotlib。我看不出手动将源目录添加到
sys.path
pip install-e source\u dir/
python source\u dir/setup.py develope有什么好处。这三种方法基本上都是将Python路径扩展到工作源目录的不同方法——后两种方法是通过在
站点包
目录()中创建一个
.egg链接
文件来实现的。我不喜欢直接修改sys.path
,因为它相对容易失去对其状态的跟踪并导入错误的版本。在某个脚本中只修改sys.path的一个优点是不需要干扰虚拟环境。当我开始使用虚拟环境时,这在matplotlib中产生了一系列奇怪的问题,如这里所述:我感到害怕。没错,但“如果您使用Conda环境,您可以将所有支持Conda的GUI框架直接安装到该环境中,则不存在此问题”.实际上,我的大部分工作都是在普通的virtualenv中完成的,而不是使用conda。我通常的方法是创建一个包含numpy和其他核心依赖项的
base
virtualenv,并通过手动将
dist包中必要的GUI库进行符号化来安装matplotlib(例如)。然后,每当我启动一个依赖matplotlib的新项目时,我都会从这个基础virtualenv进行克隆。另一种方法是使用带有
--system site packages
标志的virtualenvwrapper创建virtualenv。
(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