Pyenv,Python安装失败:未安装OpenSSL开发header

Pyenv, Python installation failure: OpenSSL development header is not installed

我一直无法使用 Pyenv 在 macOS (10.13.6) 上安装 Python,并且已经用尽了有关常见构建问题的建议。

pyenv-doctor 报告:OpenSSL development header 未安装。 OpenSSL 的重新安装,如各种相关 GitHub 问题中的建议尚未工作,没有各种标志设置,例如(各种组合):

export CFLAGS="-I$(brew --prefix openssl)/include"
export CPPFLAGS="-I$(brew --prefix openssl)/include"
export LDFLAGS="-L$(brew --prefix openssl)/lib"
export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig/"
export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"

(也在命令行中尝试了这些。)

(通过 Homebrew 尝试了 OpenSSL 1.02p 和 1.1)

尝试过

brew install readline xz

$ CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install 3.6.6

$ CFLAGS="-I$(brew --prefix openssl)/include -I$(xcrun --show-sdk-path)/usr/include" LDFLAGS="-L$(brew --prefix openssl)/lib" pyenv install 3.6.6

xcode-select --install
(or via downloadable command line tools installer for reinstallation)

运气不好。

brew link --force openssl

不允许(错误消息说要使用标志)。

也尝试过:

$(brew --prefix)/opt/openssl/bin/openssl

并在此处尝试了 OpenSSL/macOS 建议:

https://solitum.net/openssl-os-x-el-capitan-and-brew/

$PATH 显示:

/usr/local/opt/openssl/bin:/Users/tc/google-cloud-sdk/bin:/Users/tc/Code/git/flutter/bin:/usr/local/sbin:/usr/local/heroku/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Users/tc/google-cloud-sdk/bin:/Users/tc/Code/git/flutter/bin:/usr/local/sbin:/usr/local/heroku/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Users/tc/google-cloud-sdk/bin:/Users/tc/.nvm/versions/node/v8.11.3/bin:/Users/tomclaburn/Code/git/flutter/bin:/usr/local/sbin:/usr/local/heroku/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Applications/Postgres.app/Contents/Versions/latest/bin:/usr/local/mongodb/bin:/usr/local/opt/openssl/bin/openssl:/usr/local/mongodb/bin:/usr/local/mongodb/bin

和.bash_profile包含:

if [ -d "${PYENV_ROOT}" ]; then
   export PATH="${PYENV_ROOT}/bin:${PATH}"
   eval "$(pyenv init -)"
   #eval "$(pyenv virtualenv-init -)"
fi

我怀疑存在 missing/incorrect 路径或 link,但我无法确定它可能是什么。欢迎任何建议。

Pyenv 错误输出: 构建失败(OS X 10.13.6 使用 python-build 20180424)

...

最后 10 行日志:

checking size of long... 0
checking size of long long... 0
checking size of void *... 0
checking size of short... 0
checking size of float... 0
checking size of double... 0
checking size of fpos_t... 0
checking size of size_t... configure: error: in `/var/folders/jb/h01vxbqs6z93h_238q61d48h0000gn/T/python-build.20180819081705.3009/Python-3.6.6':
configure: error: cannot compute sizeof (size_t)

pyenv-doctor 错误输出:

checking for gcc... clang
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether clang accepts -g... yes
checking for clang option to accept ISO C89... none needed
checking for rl_gnu_readline_p in -lreadline... yes
checking for readline/readline.h... no
checking for SSL_library_init in -lssl... yes
checking how to run the C preprocessor... clang -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... no
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... no
checking for string.h... no
checking for memory.h... no
checking for strings.h... no
checking for inttypes.h... no
checking for stdint.h... no
checking for unistd.h... yes
checking openssl/ssl.h usability... no
checking openssl/ssl.h presence... no
checking for openssl/ssl.h... no
configure: error: OpenSSL development header is not installed.

如果这与我的问题相同,那是因为您的路径中有 headers 不应该存在。 运行 brew doctor 你会看到它抱怨。要修复它,您可以这样做:

mkdir /tmp/includes
brew doctor 2>&1 | grep "/usr/local/include" | awk '{=;print}' | xargs -I _ mv _ /tmp/includes

应用 Kit 的答案后;我必须执行以下操作来克服我还使用自制软件安装 openssl 的事实:

CFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
pyenv doctor

这让我开始工作。 还发现此 reference 对于常见的构建问题很有用。