Skip to content

Commit

Permalink
Replace python-ldap with openldap in conda env
Browse files Browse the repository at this point in the history
On PyPI, `python-ldap` is distributed as an *sdist* only, not *wheel*.
But it still requires a compilation step before installation.

Some dependencies installed with conda are rightfully ignored by Poetry.
Even when `python-ldap` is pre-installed by conda,
Poetry would still need to reinstall it which implies compilation.
Indeed there is an issue in how conda packages are created
and how they are installed:
* <python-poetry/poetry#6408 (comment)>
* <conda-forge/python-ldap-feedstock#28>

So it does not make much sense to let conda install `python-ldap`.
Instead we can instruct conda to install `openldap` only,
and pip and Poetry should be able to compile `python-ldap`.

GitHub: #1510
GitHub: mxcube/mxcubecore#849 (comment)
GitHub: conda-forge/python-ldap-feedstock#28
GitHub: mxcube/mxcubecore#851
  • Loading branch information
fabcor-maxiv authored and marcus-oscarsson committed Jan 17, 2025
1 parent 1c3d1e0 commit 474d89d
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions conda-environment.yml
Original file line number Diff line number Diff line change
@@ -1,24 +1,30 @@
%YAML 1.2

---

name: mxcubeweb

channels:
- conda-forge

dependencies:
# ====================

# Runtime dependencies
# ====================

- ffmpeg # Not directly used by mxcube, but necessary for the video-streamer
- python >=3.8,<3.12 # Make sure it matches `pyproject.toml`

# We install `python-ldap` from conda because it is "hard" to install.
# On PyPI it is not available as *wheel*, only as *sdist* which requires to be built
# with compilation steps that require a compiler and some header files.
# Installing with conda is much "easier".
- python-ldap ==3.4.3 # Make sure it matches `poetry.lock`
# `openldap` is necessary for `python-ldap` but can not be installed by pip or Poetry.
# Note also that on PyPI `python-ldap` is only available as *sdist*, not as *wheel*,
# and that installing it requires a compilation step.
# The `openldap` Conda package should provide enough for this compilation step
# (header files and things like this), but the C compiler itself.
# Make sure that a C compiler is available on the system,
# as it is NOT provided as a dependency in this Conda environment file.
- openldap


# ========================
# Development dependencies
# ========================

Expand Down

0 comments on commit 474d89d

Please sign in to comment.