Python 2.7 for Windows 64ビットマシンでlxmlをビルドしようとしています。lxmlEgg for Python 2.7バージョンです。それでコンパイルしています。私はこのサイトの指示に従っています
静的リンクセクションの下。エラーが発生しています
C:\Documents and Settings\Administrator\Desktop\lxmlpackage\lxml-2.2.6\lxml-2.2.
6>python setup.py bdist_wininst --static
Building lxml version 2.2.6.
NOTE: Trying to build without Cython, pre-generated 'src/lxml/lxml.etree.c' need
s to be available.
ERROR: 'xslt-config' is not recognized as an internal or external command,
operable program or batch file.
** make sure the development packages of libxml2 and libxslt are installed **
Using build configuration of libxslt
Building against libxml2/libxslt in one of the following directories:
..\libxml2-2.7.6--win32--w2k--x64\lib
..\libxslt-1.1.26--win32--w2k--x64--0002\lib
..\zlib-1.2.4--win32--w2k--x64
..\iconv-1.9.1--win32--w2k--x64-0001\lib
running bdist_wininst
running build
running build_py
running build_ext
building 'lxml.etree' extension
error: Unable to find vcvarsall.bat
誰でもこれを手伝ってくれますか? Microsoft Visual Studioを使用するようにパスを設定しようとしました。コマンドラインからvcvarsall.batを実行できますが、pythonに問題があります
これにはVS 2008を使用していないに違いない:)
Distutilsには def find_vcvarsall(version): function(推測するもの、vcvarsall.batを探します)があり、次のコメントがあります。
最初に、レジストリでVS 2008のproductdirを見つけようとします。それが失敗した場合、VS90COMNTOOLS env varにフォールバックします。
VS 2008を使用していない場合は、レジストリキーも適切な環境変数もないため、distutilsはvcvarsall.batファイルを見つけることができません。notは、PATH環境変数を介してbatファイルに到達できるかどうかを確認します。
解決策は、Visual StudioのToolsディレクトリを指すようにVS90COMNTOOLS変数を定義することです。
言われていることは 11.4。distutils.msvccompiler — Microsoft Compiler のPythonドキュメントのセクションをご覧ください。
通常、拡張モジュールは、Pythonのコンパイルに使用したのと同じコンパイラーでコンパイルする必要があります。
Python-listメーリングリストで Visual Studio Express 2008を今すぐダウンロード というタイトルのメールのMartin v。Loewis
Python 2.6、2.7、および3.1はすべて、そのリリース(つまり2008)で構築されています。別の長い伝統があるため、Python拡張モジュールは、Python自体と同じコンパイラバージョン(より具体的にはCRTバージョン)でビルドする必要があります。これらのリリースのモジュールには、VS 2008またはVS 2008 Expressのコピーが必要です。
上記のステートメントに照らして、Python 2.7のlxmlをビルドしたい場合はVS90COMNTOOLSの設定が処理しますが、shouldはVS 2008を使用しますtheソリューションではないvcvarsall.batファイルを見つける。
それは言われています:)人々は新しいコンパイラで古いCRTを使用しようとします:
Visual Studio 2010のC++コンパイラをVisual Studio 2008のC++ランタイムライブラリで使用できますか?
特定のCRTバージョンを使用するようにC++コンパイラを強制する方法
VS 2008-古いCランタイムに対するリンク
スレッド内のKev Dwyer(使用されるVSのバージョンの重要性を指摘するため)とStefan Behnel(コンパイラの構成を扱う場所としてdistutilsを指すため)に感謝します Windowsでlxmlを構築する問題-エラー:vcvarsall.batが見つかりません lxmlメーリングリスト。私も感謝しますagronholm from freenode #distutils IRC distutilsにvcvarsall.batファイルを探すコードが含まれていることを確認してください。
推奨される解決策を実行した後:
私の問題はまだ存在していました(CでPython拡張機能をビルドしたい).
すべてが実際に機能する前に、次の2つの信じられないほど汚い調整を行う必要がありました。
誰がここで何か間違ったことをしていたのかわかりません。おそらく私です。
編集。 this distutilsのバグ で説明されている問題のため、ディレクトリの移動は機能します。
vS90COMNTOOLSが設定されていても、
%installdir%/vcvarsall.bat
ではなく%installdir%/VC/vcvarsall.bat
にインストールされているため、msvc9compilerはvcvarsall.batを見つけることができません。
説明されている回避策は、Visual C++コマンドプロンプトを使用しています。
PythonコマンドプロンプトにMSVCを入力
SET DISTUTILS_USE_SDK = 1
SET MSSdk = 1
python.exe setup.py ...
Jorj McKieはほぼ正しかった:実際に VCForPython27.msi をインストールするだけでは十分ではありません。distutilsにはfind_vcvarsallが見つからないという問題があります。実際、この問題はdistutilsに直接ではなく、VCForPython27.msiのパッケージ方法とvcvarsall.batの配置場所にあります(フォルダーレイアウトはVS2008 SDKとは異なります)。
簡単な回避策は、これにパッチを当てる際にPython 2.7.11:distutilsの代わりにsetuptoolsを使用してください。
Distutilsにこだわっている場合の別の手動回避策:
1) Enter MSVC for Python command Prompt
2) SET DISTUTILS_USE_SDK=1
3) SET MSSdk=1
4) you can then build your C extensions: python.exe setup.py ...
Gregory Szorcによるバグレポートと回避策: http://bugs.python.org/issue23246
IPython内で%% cythonマジックを使用するための詳細情報と回避策: https://github.com/cython/cython/wiki/CythonExtensionsOnWindows
https://github.com/develersrl/gccwinbinaries
同様の問題がありました。これは、インストールウィザードを使用して1つの環境設定を設定する以外に、即座に機能しました。