mirror of
https://github.com/pyenv/pyenv.git
synced 2025-11-15 06:43:53 -05:00
openssl: +subheaders
@@ -176,84 +176,84 @@ MACOSX_DEPLOYMENT_TARGET=10.14
|
||||
|
||||
## ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
|
||||
|
||||
0. First, check
|
||||
* if you actually have OpenSSL and its headers installed (and for the right architecture and ecosystem if there are more than one at your machine)
|
||||
* if the problem is resolved by upgrading Pyenv to the latest release and to the head version
|
||||
### 0. First, check
|
||||
* if you actually have OpenSSL and its headers installed (and for the right architecture and ecosystem if there are more than one at your machine)
|
||||
* if the problem is resolved by upgrading Pyenv to the latest release and to the head version
|
||||
|
||||
1. **OpenSSL is installed to an uncommon location.**
|
||||
### 1. **OpenSSL is installed to an uncommon location.**
|
||||
|
||||
Pass the location of its headers and libraries explicitly:
|
||||
Pass the location of its headers and libraries explicitly:
|
||||
|
||||
```sh
|
||||
CPPFLAGS="-I<openssl install prefix>/include" \
|
||||
LDFLAGS="-L<openssl install prefix>/lib" \
|
||||
pyenv install -v <python version>
|
||||
```
|
||||
|
||||
or, alternatively, [for Python 3.7+](https://bugs.python.org/issue32598), instead of `CPPFLAGS` and `LDFLAGS`:
|
||||
|
||||
```sh
|
||||
CONFIGURE_OPTS="--with-openssl=<openssl install prefix>"
|
||||
```
|
||||
|
||||
E.g. (invocations that worked for various people):
|
||||
|
||||
* RHEL6:
|
||||
|
||||
```sh
|
||||
CPPFLAGS="-I<openssl install prefix>/include" \
|
||||
LDFLAGS="-L<openssl install prefix>/lib" \
|
||||
pyenv install -v <python version>
|
||||
CPPFLAGS=-I/usr/include/openssl \
|
||||
LDFLAGS=-L/usr/lib64 \
|
||||
pyenv install -v 3.4.3
|
||||
```
|
||||
|
||||
or, alternatively, [for Python 3.7+](https://bugs.python.org/issue32598), instead of `CPPFLAGS` and `LDFLAGS`:
|
||||
* Arch Linux:
|
||||
|
||||
```sh
|
||||
CONFIGURE_OPTS="--with-openssl=<openssl install prefix>"
|
||||
LDFLAGS="-L/usr/lib/openssl-1.0" \
|
||||
CPPFLAGS="-I/usr/include/openssl-1.0" \
|
||||
pyenv install -v 3.4.3
|
||||
```
|
||||
|
||||
E.g. (invocations that worked for various people):
|
||||
* If you installed openssl with macports:
|
||||
|
||||
* RHEL6:
|
||||
```sh
|
||||
CPPFLAGS="-I/opt/local/include/" \
|
||||
LDFLAGS="-L/opt/local/lib/" \
|
||||
pyenv install -v 3.4.3
|
||||
```
|
||||
|
||||
* On Ubuntu 14.04 on Dreamhost, an extra flag is required for Python 3.7+:
|
||||
* First, follow these instructions: https://help.dreamhost.com/hc/en-us/articles/360001435926-Installing-OpenSSL-locally-under-your-username
|
||||
* Then, run:
|
||||
```sh
|
||||
CPPFLAGS=-I/usr/include/openssl \
|
||||
LDFLAGS=-L/usr/lib64 \
|
||||
pyenv install -v 3.4.3
|
||||
CPPFLAGS=-I$HOME/openssl/include \
|
||||
LDFLAGS=-L$HOME/openssl/lib \
|
||||
SSH=$HOME/openssl
|
||||
pyenv install -v 3.7.2
|
||||
```
|
||||
|
||||
* Arch Linux:
|
||||
### 2. **Your OpenSSL version is incompatible with the Python version you're trying to install**
|
||||
|
||||
```sh
|
||||
LDFLAGS="-L/usr/lib/openssl-1.0" \
|
||||
CPPFLAGS="-I/usr/include/openssl-1.0" \
|
||||
pyenv install -v 3.4.3
|
||||
```
|
||||
Old Python versions (generally, <3.5 and <2.7.13) require OpenSSL 1.0 while newer systems provide 1.1, and vice versa.
|
||||
Note that OpenSSL 1.0 is EOL and by now practically unusable on the Internet due to using obsolete standards.
|
||||
|
||||
* If you installed openssl with macports:
|
||||
Install the right OpenSSL version and point the build to its location as per above if needed.
|
||||
|
||||
```sh
|
||||
CPPFLAGS="-I/opt/local/include/" \
|
||||
LDFLAGS="-L/opt/local/lib/" \
|
||||
pyenv install -v 3.4.3
|
||||
```
|
||||
E.g.:
|
||||
|
||||
* On Ubuntu 14.04 on Dreamhost, an extra flag is required for Python 3.7+:
|
||||
* First, follow these instructions: https://help.dreamhost.com/hc/en-us/articles/360001435926-Installing-OpenSSL-locally-under-your-username
|
||||
* Then, run:
|
||||
```sh
|
||||
CPPFLAGS=-I$HOME/openssl/include \
|
||||
LDFLAGS=-L$HOME/openssl/lib \
|
||||
SSH=$HOME/openssl
|
||||
pyenv install -v 3.7.2
|
||||
```
|
||||
* On Debian stretch and Ubuntu bionic, `libssl-dev` is OpenSSL 1.1.x, but support for that was only added in Python 2.7.13, 3.5.3 and 3.6.0. To install earlier versions, you need to replace `libssl-dev` with `libssl1.0-dev`.
|
||||
|
||||
2. **Your OpenSSL version is incompatible with the Python version you're trying to install**
|
||||
```sh
|
||||
sudo apt-get remove libssl-dev
|
||||
sudo apt-get update
|
||||
sudo apt-get install libssl1.0-dev
|
||||
```
|
||||
|
||||
Old Python versions (generally, <3.5 and <2.7.13) require OpenSSL 1.0 while newer systems provide 1.1, and vice versa.
|
||||
Note that OpenSSL 1.0 is EOL and by now practically unusable on the Internet due to using obsolete standards.
|
||||
https://github.com/pyenv/pyenv/issues/945#issuecomment-409627448 has a more complex workaround that preserves `libssl-dev`.
|
||||
|
||||
Install the right OpenSSL version and point the build to its location as per above if needed.
|
||||
* On FreeBSD 10-RELEASE and 11-CURRENT, you may need to recompile ``security/openssl`` without SSLv2 support. (See [#464](https://github.com/yyuu/pyenv/issues/464#issuecomment-152821922)).
|
||||
|
||||
E.g.:
|
||||
|
||||
* On Debian stretch and Ubuntu bionic, `libssl-dev` is OpenSSL 1.1.x, but support for that was only added in Python 2.7.13, 3.5.3 and 3.6.0. To install earlier versions, you need to replace `libssl-dev` with `libssl1.0-dev`.
|
||||
|
||||
```sh
|
||||
sudo apt-get remove libssl-dev
|
||||
sudo apt-get update
|
||||
sudo apt-get install libssl1.0-dev
|
||||
```
|
||||
|
||||
https://github.com/pyenv/pyenv/issues/945#issuecomment-409627448 has a more complex workaround that preserves `libssl-dev`.
|
||||
|
||||
* On FreeBSD 10-RELEASE and 11-CURRENT, you may need to recompile ``security/openssl`` without SSLv2 support. (See [#464](https://github.com/yyuu/pyenv/issues/464#issuecomment-152821922)).
|
||||
|
||||
* On Debian Jessie, you can use backports to install OpenSSL 1.0.2: `sudo apt -t jessie-backports install openssl`
|
||||
* On Debian Jessie, you can use backports to install OpenSSL 1.0.2: `sudo apt -t jessie-backports install openssl`
|
||||
|
||||
## python-build: definition not found
|
||||
|
||||
|
||||
Reference in New Issue
Block a user