Dan*_*ein 6 python git distutils anaconda conda
我在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在您的root环境中安装了matplotlib的开发版本。也许您创建了一个新环境,但是在安装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
Run Code Online (Sandbox Code Playgroud)
至此,我已经创建了一个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
Run Code Online (Sandbox Code Playgroud)
无论如何,不再建议直接使用setuptools(即python setup.py install或python 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
Run Code Online (Sandbox Code Playgroud)
请注意该#egg=部分,该部分告诉pip您将源代码安装到./src/matplotlib-dev。如果您已经获得了当前正在使用的本地副本,则git也可以将pip路径传递到本地源目录,而不是URI 。
似乎也可以使用conda develop <path>代替pip install -e <path>,尽管conda似乎不像以前那样提供集成的VCS支持pip。