私のプロジェクトに必要なすべてのパッケージをインストールするシェルスクリプトがあります。これらのパッケージのいくつかはPython 3に基づいており、コンパイルする必要があり、Pythonソース1をインストールする必要があります(python3-dev
一般的なDebianベースのディストリビューションのパッケージなど)。それ以外の場合、理解できない、または誤解を招くコンパイルエラーメッセージ(ヘッダーファイルがありません)が表示されますが、これが私が避けたいことです。
これで、Python 3ソースがすでにインストールされているかどうかを検出する方が良いと思います。実行しようとしない場合に備えて、代わりにpip
ユーザーに配布用のPythonソースをインポートするように指示し、一部は最も一般的なガイドラインの1つです。
簡単に言うと、Python 3ヘッダーがさまざまなディストリビューションにインストールされているかどうかを確実に検出する方法は何ですか(おそらくCygwinなどのLinux以外の環境でも可能です)。
1. パッケージmypy
といくつかのエラーメッセージは次のとおりです。
ast27/Parser/acceler.c:13:25: fatal error: pgenheaders.h: No such file or directory compilation terminated.
[… ]
Command "/path/to/my/venv/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-x0e2zn8t/typed-ast/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-uythmwn1-record/install-record.txt --single-version-externally-managed --compile --install-headers /path/to/my/venv/include/site/python3.5/typed-ast" failed with error code 1 in /tmp/pip-build-x0e2zn8t/typed-ast/
答え1
python3-config
解決策が見つかりました。デフォルトでは、ここにPython 3開発ファイルがあることを示す()に解決策があることを確認してください。PATH
command -v python3-config >/dev/null
もう一歩進めたい場合は、理論的には、このツールを使用して必要な特定のヘッダーファイルを確認できるインクルードディレクトリをインポートすることもできますが、それは必要ではないと思います。
python2-config
ただし、Python 2とPython 2.7+(およびそれぞれpython2.7-config
)にも同じことが当てはまります。