Skip to main content

Binaries for the Hugo static site generator, installable with pip

Project description

hugo-python-distributions

Classifiers Description
Builds Actions Status for CI Actions status for CD pre-commit.ci status
Package PyPI version PyPI - Python Version Downloads Downloads per month Downloads
Meta License Hugo version Documentation pre-commit Ruff

Binaries for the extended version of the Hugo static site generator, installable via pip

This package provides wheels for Hugo so that it can be used with pip on macOS, Linux, and Windows; for Python versions 3.8–3.12.

What is Hugo?

Hugo is a static site generator written in Go. It is designed to be fast and flexible, and it is used by many people and organizations for their websites, documentation, and personal blogs.

[!NOTE] This distribution of Hugo is currently not affiliated with the official Hugo project. Please refer to the Hugo documentation for more information on Hugo.

What version of hugo do I install?

This package, hugo is versioned alongside the Hugo releases and is aligned with the versioning of Hugo itself, which uses SemVer – but is likely versioned according to 0ver software standards based on their versioning history.

Binaries for hugo through these wheels are available for Hugo versions 0.121.2 and above. If you need an older version of hugo that is not available through this package, please consider using the official Hugo binaries.

Please refer to the section on Supported platforms for a list of wheels available for supported platforms and architectures. If it does, jump to the Quickstart section to get started.

Documentation

Quickstart

Create a virtual environment and install the package (or install it globally on your system):

python -m virtualenv venv  # (or your preferred method of creating virtual environments)
pip install hugo

This places a hugo installation with an executable in your virtual environment and adds an entry point to it in your virtual environment's bin directory. You can use the hugo command as you would normally:

hugo version
hugo env --logLevel info

Alternatively, you can install the package globally on your system:

python3.X -m pip install hugo  # Unix
py -m pip install hugo         # Windows

[!TIP] It is a great idea to use pipx to install or use Hugo in an isolated location without having to create a virtual environment, which will allow you to run Hugo as a command-line tool without having to install it globally on your system. i.e.,

pipx install hugo      # install and run Hugo through pipx

or

pipx run hugo==0.121.2 # run a specific version of Hugo through pipx, even if a different version is installed in whatever environment you are in

Please refer to the pipx documentation for more information.

Then, you can use the hugo commands as you would normally:

hugo version
hugo env --logLevel info

and

hugo new site mysite
hugo --printI18nWarnings server
# and so on
...

Standard virtual environments can allow multiple versions of Hugo to be installed and used side-by-side. To use a specific version of Hugo, you can specify the version when installing the package (please refer to the section What version of hugo do I install? for more information):

pip install "hugo==0.121.2"

For more information on using Hugo and its command-line interface, please refer to the Hugo documentation and Hugo CLI documentation.

Supported platforms

A subset of the platforms supported by Hugo itself are supported by these wheels for hugo via hugo-python-distributions. The plan is to support as many platforms as possible with Python wheels and platform tags. Please refer to the following table for a list of supported platforms and architectures:

Platform Architecture Supported
macOS x86_64 (Intel)
macOS arm64 (Silicon)
Linux amd64
Linux arm64
Windows x86_64
Windows arm64 💡 Probable[^3]
Windows i686 ❌ Will not receive support[^1]
DragonFlyBSD amd64 ❌ Will not receive support[^2]
FreeBSD amd64 ❌ Will not receive support[^2]
OpenBSD amd64 ❌ Will not receive support[^2]
NetBSD amd64 ❌ Will not receive support[^2]
Solaris amd64 ❌ Will not receive support[^2]

[^1]: Windows 32-bit support is possible to include, but hasn't been included due to the diminishing popularity of i686 instruction set-based systems and the lack of resources to test and build for it. If you need support for Windows 32-bit, please consider either using the official Hugo binaries or compiling from HugoReleaser. [^2]: Support for these platforms is not possible to include because of i. the lack of resources to test and build for them and ii. the lack of support for these platform specifications in Python packaging standards and tooling. If you need support for these platforms, please consider downloading the official Hugo binaries [^3]: Support for Windows ARM64 is possible to include, but cibuildwheel support for it is currently experimental. Hugo does not officially support Windows ARM64 at the moment, but it should be possible to build from source for it and can receive support in the future through this package.

Building from source

Building the extended version of Hugo from source requires the following dependencies:

  • The Go toolchain
  • The Git version control system
  • A C/C++ compiler, such as GCC or Clang

Windows users can use the Chocolatey package manager in order to use the MinGW compiler. After installing Chocolatey, run the following command in an elevated terminal prompt:

choco install mingw

Then, clone the repository and run the build script:

git clone https://github.com/agriyakhetarpal/hugo-python-distributions@main
python -m venv venv
source venv/bin/activate      # on Unix-based systems
venv\Scripts\activate.bat     # on Windows
pip install -e .              # editable installation
pip install .                 # regular installation

Cross-compiling for different architectures

[!NOTE] This functionality is implemented just for macOS at the moment, but it can be extended to other platforms as well in the near future.

This package is capable of cross-compiling Hugo binaries for the same platform but different architectures and it can be used as follows.

Say, on an Intel-based (x86_64) macOS machine:

export GOARCH="arm64"
pip install .  # or pip install -e .

This will build a macOS arm64 binary distribution of Hugo that can be used on Apple Silicon-based (arm64) macOS machines. To build a binary distribution for the target Intel-based (x86_64) macOS platform on the host Apple Silicon-based (arm64) macOS machine, you can use the following command:

export GOARCH="amd64"
pip install .  # or pip install -e .

Background

Binaries for the Hugo static site generator are available for download from the Hugo releases page. These binaries have to be downloaded and placed in an appropriate location on the system manually and the PATH environment variable has to be updated to include said location.

This package provides wheels for Hugo to be used with pip on macOS, Linux, and Windows. This allows Hugo to be installed and used in a virtual environment, which allows multiple versions of Hugo to be installed and used side-by-side in different virtual environments, where Hugo can be used as a command-line tool (a Python API is not provided at this time given the lack of such a demand for it).

Use cases

This package is designed to be used in the following scenarios:

  • You want to use Hugo as a command-line tool, but you don't want it to be installed globally on your system or do not have the necessary permissions to do so.
  • You cannot or do not want to use the official Hugo binaries
  • You want to use Hugo in a virtual environment that is isolated from the rest of your system – this also allows you to install and use multiple versions of Hugo side-by-side if needed for any reason
  • You want to use Hugo in a Python-based project, such as a static site generator that uses Hugo as a backend?
  • You want to test a new version of Hugo without having to install it globally on your system or affecting your existing Hugo installation
  • Python wheels allow for incredibly fast installation, in comparison to using other methods of installing Hugo such as system package managers
  • Easy updates to the latest version of Hugo through the use of the pip install --upgrade hugo command, and automatic updates possible too if you use a package manager such as Poetry or PDM to manage your Python dependencies or a tool such as pipx to manage your command-line tools
  • ...and more!

(Known) limitations

  • It is difficult to provide wheels for all platforms and architectures (see Supported platforms), so this package only provides wheels for the most common ones—those supported by Python platform tags, packaging standards and tooling—it is not reasonable to do so and provide releases for other platforms owing to the limited resources available on CI systems, in this case, GitHub Actions runners. For extra platforms and architectures, please refer to the Building from source section or consider using the official Hugo binaries for your purpose.
  • This package does not provide a Python API for Hugo, it just wraps its own command-line interface. The packaging infrastructure for this Python package is not designed to provide a Python API for Hugo, and it is not the goal of this package to provide one. If you need a Python API for Hugo, please refer to the Hugo documentation for further resources on how to use Hugo programmatically as needed.

Licensing

This project is licensed under the terms of the Apache 2.0 license. Hugo is available under Apache 2.0 (see the Hugo license) as well.

Footnotes

  • This project is currently not affiliated with the official Hugo project. Please refer to the Hugo documentation for more information on Hugo.
  • The author of this project: @agriyakhetarpal, would like to express a token of gratitude to the owner of the Hugo package on PyPI (@nariman) for their kind gesture of granting access to take over the package name with the underlying provisions of PEP 541. This way, it allows users to install the package using the same name as the official Hugo project, which undoubtedly provides for a better user experience and convenience to users of this package when compared to the previous package name, python-hugo.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hugo-0.123.5.tar.gz (16.4 kB view hashes)

Uploaded Source

Built Distributions

hugo-0.123.5-cp312-cp312-win_amd64.whl (51.2 MB view hashes)

Uploaded CPython 3.12 Windows x86-64

hugo-0.123.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (48.8 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

hugo-0.123.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (45.9 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

hugo-0.123.5-cp312-cp312-macosx_11_0_arm64.whl (45.8 MB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

hugo-0.123.5-cp312-cp312-macosx_10_9_x86_64.whl (47.9 MB view hashes)

Uploaded CPython 3.12 macOS 10.9+ x86-64

hugo-0.123.5-cp311-cp311-win_amd64.whl (51.2 MB view hashes)

Uploaded CPython 3.11 Windows x86-64

hugo-0.123.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (48.8 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

hugo-0.123.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (45.9 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

hugo-0.123.5-cp311-cp311-macosx_11_0_arm64.whl (45.8 MB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

hugo-0.123.5-cp311-cp311-macosx_10_9_x86_64.whl (47.9 MB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

hugo-0.123.5-cp310-cp310-win_amd64.whl (51.2 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

hugo-0.123.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (48.8 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

hugo-0.123.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (45.9 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

hugo-0.123.5-cp310-cp310-macosx_11_0_arm64.whl (45.8 MB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

hugo-0.123.5-cp310-cp310-macosx_10_9_x86_64.whl (47.9 MB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

hugo-0.123.5-cp39-cp39-win_amd64.whl (51.2 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

hugo-0.123.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (48.8 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

hugo-0.123.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (45.9 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

hugo-0.123.5-cp39-cp39-macosx_11_0_arm64.whl (45.8 MB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

hugo-0.123.5-cp39-cp39-macosx_10_9_x86_64.whl (47.9 MB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

hugo-0.123.5-cp38-cp38-win_amd64.whl (51.2 MB view hashes)

Uploaded CPython 3.8 Windows x86-64

hugo-0.123.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (48.8 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

hugo-0.123.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (45.9 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

hugo-0.123.5-cp38-cp38-macosx_11_0_arm64.whl (45.6 MB view hashes)

Uploaded CPython 3.8 macOS 11.0+ ARM64

hugo-0.123.5-cp38-cp38-macosx_10_9_x86_64.whl (47.9 MB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page