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

标签 python git anaconda distutils conda

我在 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

在任何情况下,直接使用设置工具(即 python setup.py installpython setup.py develop )都是 no longer recommended , 和 might not be supported by future versions of numpy etc. .

首选方法是使用 pip install <path> , 或 pip install -e <path>如果你想要 "editable"安装(类似于 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

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

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

关于python - 在 Anaconda 中安装 Python 模块开发版本的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33636688/

相关文章:

python - 批处理中 % 的字面用法

python - 切片 3d numpy 数组返回奇怪的形状

git - 在 git 上管理更直接连接的项目

python - 处理模块依赖问题

anaconda - 卸载并重新安装 Anaconda 时的潜在问题

python - Conda 未在 Powershell 中激活

python - 如何在 Python 中的 scipy.optimize.curve_fit 中设置变量参数?

python - 错误 : OSError: libmediainfo. so.0:无法打开共享对象文件:没有这样的文件或目录

mysql - schema.rb 神秘地变成了另一个文件

git - merge ,但不 merge