在 Anaconda 中安装 Python 模块的开发版本的最佳做法是什么?
What's the best practice for installing development versions of Python modules in Anaconda?
我在 Mac 上使用 Anaconda python 发行版。我想使用最新版本的 matplotlib source code on Github,进行一些更改,然后看看它是如何运行的。但大多数时候我只是想使用 Anaconda Python 附带的普通版本的 matplotlib,所以我想要一种可以轻松来回切换的方法。
matplotlib 文档对 branching and pull-request workflow 有很好的描述,但我不清楚我如何实际安装和使用 matplotlib 的开发版本以保持我的工作 Python实施。
我的猜测是我想设置一个包含最新 matplotlib 版本及其依赖项的环境,并在该环境和正常 root
环境之间切换。但是当我使用python setup.py develop
安装matplotlib的开发版本时,它似乎安装到两个环境。
那么,使用来自 GitHub 的 Python 包的开发版本的最佳实践是什么?
正如您在问题中提到的,conda env
能够为您要处理的任何软件包的开发版本维护单独的 Python 环境。
我不太确定为什么您发现 python setup.py develop
正在将 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 develop
)是 no longer recommended, and might not be supported by future versions of numpy etc.。
首选方法是使用 pip install <path>
,如果您想要 "editable" 安装(类似于 python setup.py develop
给您的安装),则使用 pip install -e <path>
:
(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
注意 #egg=
part,它告诉 pip
将源安装到 ./src/matplotlib-dev
。如果您已经有了当前正在处理的本地副本,您还可以将 pip
路径传递给本地源目录,而不是 git
URI。
也应该可以使用 conda develop <path>
而不是 pip install -e <path>
,尽管 conda
似乎不像 pip
那样提供集成的 VCS 支持。
我在 Mac 上使用 Anaconda python 发行版。我想使用最新版本的 matplotlib source code on Github,进行一些更改,然后看看它是如何运行的。但大多数时候我只是想使用 Anaconda Python 附带的普通版本的 matplotlib,所以我想要一种可以轻松来回切换的方法。
matplotlib 文档对 branching and pull-request workflow 有很好的描述,但我不清楚我如何实际安装和使用 matplotlib 的开发版本以保持我的工作 Python实施。
我的猜测是我想设置一个包含最新 matplotlib 版本及其依赖项的环境,并在该环境和正常 root
环境之间切换。但是当我使用python setup.py develop
安装matplotlib的开发版本时,它似乎安装到两个环境。
那么,使用来自 GitHub 的 Python 包的开发版本的最佳实践是什么?
正如您在问题中提到的,conda env
能够为您要处理的任何软件包的开发版本维护单独的 Python 环境。
我不太确定为什么您发现 python setup.py develop
正在将 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 develop
)是 no longer recommended, and might not be supported by future versions of numpy etc.。
首选方法是使用 pip install <path>
,如果您想要 "editable" 安装(类似于 python setup.py develop
给您的安装),则使用 pip install -e <path>
:
(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
注意 #egg=
part,它告诉 pip
将源安装到 ./src/matplotlib-dev
。如果您已经有了当前正在处理的本地副本,您还可以将 pip
路径传递给本地源目录,而不是 git
URI。
也应该可以使用 conda develop <path>
而不是 pip install -e <path>
,尽管 conda
似乎不像 pip
那样提供集成的 VCS 支持。