Conda:将本地开发包安装到单个conda环境中

bre*_*yne 16 python pip anaconda conda

如果我使用的是virtualenv,我会激活项目的虚拟环境,然后安装我正在开发模式下开发的软件包.类似于以下内容:

workon superbad
pip install -e fnawesome
Run Code Online (Sandbox Code Playgroud)

这允许我的软件包fnawesome可以在我的superbad虚拟环境中使用任何代码更新进行访问.如果我切换到任何其他环境,包括默认环境,superbadid无法访问.

人们如何使用conda进行类似的设置?

asm*_*rer 16

您可以配置将自动安装到任何conda环境中的默认软件包列表

conda config --add create_default_packages pip --add create_default_packages ipython
Run Code Online (Sandbox Code Playgroud)

将让这个conda create总是包含pipipython在新的环境中(此命令是一样的加入

create_default_packages:
  - ipython
  - pip
Run Code Online (Sandbox Code Playgroud)

到你的.condarc文件).

要创建没有这些的环境,请使用conda create --no-default-packages.


bre*_*yne 11

好的,我想出了问题背后的问题.

如果您创建一个conda环境,请确保包含pip和ipython.否则,它将不会设置指向这些实用程序的环境特定版本的路径.

所以:

conda create -n superbad scikit-learn
source activate superbad
pip install -e fnawesome  # (installs in default env b/c pip is global pip)
ipython  # runs global ipython with access to global site packages
python # runs the environment's python with no access to fnawesome
Run Code Online (Sandbox Code Playgroud)

这按预期工作:

conda create -n superbad scikit-learn pip ipython
source activate superbad
pip install -e fnawesome  # installing into superbad site packages
ipython  # runs superbad ipython
python  # runs the environment's python with access to fnawesome
source deactivate
ipython # no access to fnawesome
Run Code Online (Sandbox Code Playgroud)