pyyaml AttributeError: cython_sources


The Issue

The problem was first reported on the PyYAML GitHub repository, under the issue titled AttributeError: ‘CythonSources’ with Cython 3.0.0a10. Users reported that when trying to install PyYAML from sources with Cython 3.0.0a10, the installation failed and threw an AttributeError: ‘CythonSources’.

This issue was widely discussed, and several solutions were proposed by the community. In this blog post, we will go over these proposed solutions to help you navigate this compatibility issue.

Possible Solutions

Here are the solutions proposed by the community:

Downgrade PyYAML

Some users reported that downgrading PyYAML to version 5.3.1 resolved the issue. This can be done using pip: pip install pyyaml==5.3.1.

Limit the Cython version

Another solution proposed was to limit the Cython version to less than 3.0.0. This can be done using pip: pip install "cython<3.0.0". This solution might be helpful if your project can work with an older version of Cython.

Upgrade PyYAML

Upgrading PyYAML to version 6.0 may resolve this issue. This can be done using pip: pip install pyyaml==6.0. This might be a viable solution if your project can work with the latest version of PyYAML.

Specific versioning for poetry users

For users using poetry, it may work to set the PyYAML version to whatever is in the poetry.lock file. i.e.

poetry run pip install cython<3.0 pyyaml==5.4.1 --no-build-isolation

Avoid passing --pre to pip

Avoiding the use of the --pre option in pip. The --pre option in pip globally allows pre-releases to be considered for installation, so it affects the package you asked for as well as its entire dependency tree and any build requirements pip installs.

AWSCLI users

Some developers installing awscli also have encountered this error. Pinning PyYAML to version 5.3.1 may help.