Bryce Frank
Bryce Frank

Reputation: 716

Conda dependencies do not install on local package build

I am building a Python package using conda-build. Right now, my structure looks like this:

- my_recipe/
    - meta.yaml
    - build.sh

And my meta.yaml reads thusly:

package:
  name: my_pkg
version: "0.2.0"

source:
  path: ../my_pkg

requirements:
  build:
    - python
    - setuptools
  run:
    - python
    - pandas
    - numpy
    - plotly
    - matplotlib
    - pyqtgraph
    - pyopengl
    - gdal
    - scipy
    - scikit-image

The package itself builds correctly when I run

conda-build my_recipe/

and it installs successfully when I run

conda install -n my_env --use-local ~/miniconda3/envs/my_env/conda-bld/linux-64/my_pkg-0.2.0-py36_0.tar.bz2

However, none of the dependencies listed under run seem to install along with the package. For example, when I import the package in Python it says that pandas could not be found.

Are my dependencies listed in the correct location? Do I also need to list the dependencies in setup.py? The documentation is not very clear on where this information should be.

Upvotes: 34

Views: 5862

Answers (4)

merv
merv

Reputation: 76700

As commented by @darthbith, using the --use-local flag with the package name,

conda install -n my_env --use-local my_pkg

works as intended. Using a path to a tarball directly triggers Conda to install without dependencies.

Upvotes: 2

Miotto
Miotto

Reputation: 329

Specifying the channel works for me.

Actually, you don't even need to specify the full path. For instance, from the folder where the recipe is located (the meta.yaml and build.sh), I build my package with:

conda-build . --output-folder ./build

Then, I install the package with:

conda install my_package_name -c ./build

This will also install the dependencies specified in the meta.yaml. Here is how my meta.yaml looks like.

package:
  name: my_package_name
  version: 0.0.1

source:
  path: .

requirements:
  build:
    - python
    - setuptools

  run:
    - python
    - numpy
    - holopy
    - scikit-image

Upvotes: 4

Singularity
Singularity

Reputation: 485

I've had luck telling conda to treat the local directory as a channel:

conda install my-package-name -c file:///FULL_PATH_TO_CONDA/envs/my_env/conda-bld/

I figured this out based on instructions here, although note I didn't have to run conda index first because conda build had already created repodata.json files.

Upvotes: 1

RobinDunn
RobinDunn

Reputation: 6206

I found that using the --update-deps flag when installing a local package does install the package's dependencies, as expected. Like this:

conda install --use-local --update-deps my-package-name

Upvotes: 0

Related Questions