摘要:安装失败,saxon在Python上
结果来自: saxon-setup.py build_ext -if (见下面的源代码清单)
running build_ext
building 'saxonc' extension
error: Unable to find vcvarsall.bat我对编译器/编译( .pyx、.cpp、.c、.dll等)缺乏经验。以及如何从python转到编译代码。看起来Saxon是用Java编写的,跨到C源代码,然后在Windows上本地编译,然后添加钩子,这样你就可以从你的获得那个复杂的C代码了,我的头在旋转!)
环境: Python 10, 3.9.2
下面是试图安装的“面包屑”列表,并提供了一些链接:
saxon-c (Home Edition / open-source, easy to install)
https://www.saxonica.com/download/c.xml
libsaxon-HEC-win-setup-v1.2.1.exe
path to setup.py: c:\Program Files\Saxonica\SaxonHEC1.2.1\Saxon.C.API\python-saxon
Docs:
https://www.saxonica.com/saxon-c/documentation/index.html#!starting/installingpython
https://www.saxonica.com/saxon-c/doc/html/saxonc.html cython installed via conda (easy)
https://anaconda.org/anaconda/cython
https://cython.readthedocs.io/en/latest/
cython 0.29.22 py39hd77b12b_0 setuptools installed via conda (easy)
https://anaconda.org/anaconda/setuptools
setuptools 52.0.0 py39haa95532_0 https://wiki.python.org/moin/WindowsCompilers (required some navigation to avoid the IDE / large download)
Microsoft Build Tools for Visual Studio 2019.
C++ build tools
latest versions of MSVCv142 - VS 2019 C++ x64/x86 build tools and
Windows 10 SDK
are checked. https://pythonwheels.com/ (brief look - no easy solution)
https://packaging.python.org/ (brief look - many options, no easy solutions)
https://www.lfd.uci.edu/~gohlke/pythonlibs/ (brief look - no Saxon)
https://packaging.python.org/guides/installing-scientific-packages/#the-conda-cross-platform-package-manager
(I wish Saxon was a "scientific" package with a simple conda install.) saxon-setup.py清单-结果出错:找不到vcvarsall.bat
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
from Cython.Build import cythonize
setup(ext_modules=cythonize( #Long line reformatted here for readability. see original
[Extension("saxonc",
["saxonc.pyx",
"../SaxonProcessor.cpp",
"../SaxonCGlue.c",
"../SaxonCXPath.c",
"../XdmValue.cpp",
"../XdmItem.cpp",
"../XdmNode.cpp",
"../XdmAtomicValue.cpp",
"../XsltProcessor.cpp",
"../Xslt30Processor.cpp",
"../XQueryProcessor.cpp",
"../XPathProcessor.cpp",
"../SchemaValidator.cpp"], language="c++",
)]),include_dirs = ['../jni', "../jni/unix"],
cmdclass = {'build_ext': build_ext}
)下一次尝试(评论后)在Anaconda Promp (miniconda3)中尝试将Anaconda与Powershell联系起来
conda update conda
activate xml #my xml conda environment
conda init我关闭并重新打开Anaconda提示(显示先前init的结果,如下所示)
(xml) C:\Users\rick>conda init
no change C:\Users\rick\miniconda3\Scripts\conda.exe
no change C:\Users\rick\miniconda3\Scripts\conda-env.exe
no change C:\Users\rick\miniconda3\Scripts\conda-script.py
no change C:\Users\rick\miniconda3\Scripts\conda-env-script.py
no change C:\Users\rick\miniconda3\condabin\conda.bat
no change C:\Users\rick\miniconda3\Library\bin\conda.bat
no change C:\Users\rick\miniconda3\condabin\_conda_activate.bat
no change C:\Users\rick\miniconda3\condabin\rename_tmp.bat
no change C:\Users\rick\miniconda3\condabin\conda_auto_activate.bat
no change C:\Users\rick\miniconda3\condabin\conda_hook.bat
no change C:\Users\rick\miniconda3\Scripts\activate.bat
no change C:\Users\rick\miniconda3\condabin\activate.bat
no change C:\Users\rick\miniconda3\condabin\deactivate.bat
no change C:\Users\rick\miniconda3\Scripts\activate
no change C:\Users\rick\miniconda3\Scripts\deactivate
no change C:\Users\rick\miniconda3\etc\profile.d\conda.sh
no change C:\Users\rick\miniconda3\etc\fish\conf.d\conda.fish
no change C:\Users\rick\miniconda3\shell\condabin\Conda.psm1
no change C:\Users\rick\miniconda3\shell\condabin\conda-hook.ps1
no change C:\Users\rick\miniconda3\Lib\site-packages\xontrib\conda.xsh
no change C:\Users\rick\miniconda3\etc\profile.d\conda.csh
no change C:\Users\rick\Documents\WindowsPowerShell\profile.ps1
no change HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun
No action taken.我以管理员身份运行Powershell。
PS C:\Program Files\Saxonica\SaxonHEC1.2.1\Saxon.C.API\python-saxon> py --version
py : The term 'py' is not recognized ...
PS C:\Program Files\Saxonica\SaxonHEC1.2.1\Saxon.C.API\python-saxon> python --version
Python 3.9.2PS C:\Program Files\Saxonica\SaxonHEC1.2.1\Saxon.C.API\python-saxon> python saxon-setup.py build_ext -if
running build_ext
building 'saxonc' extension
error: Unable to find vcvarsall.bat不确定这是否有什么帮助
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current>csc /version
3.9.0-6.21160.10 (59eedc33)第三次尝试(在评论之后)得到了编译--见答案。
发布于 2021-03-25 11:52:43
完全安装C++编译器解决了“错误:找不到vcvarsall.bat”。
如果您只是安装MicrosoftBuildToolsforVisualStudio2019,并选中了: C++ Build、最新版本的MSVCv142 - VS 2019 C++ x64/x86构建工具和Windows10SDK,您将错过一些必需的组件。
解决方案是返回到Build安装程序,并安装整个"C++构建工具“组件集。如果您忽略了这一点,只需再次运行(它只是一个安装程序),然后修改您的安装,从主页中选择C++构建工具:

这将为您选择一组组件,安装将很大(很多gigs),但是它将为Python编译。
安装之后,标准Windows安装程序列表展开,包括:
微软Visual 2010 AddOn
要在anaconda环境中编译:
以管理员身份打开Anaconda Powershell提示符
PS cd C:\Program Files\Saxonica\SaxonHEC1.2.1\Saxon.C.API\python-saxon
PS C:\WINDOWS\system32> conda activate xml #xml here is my conda environment to sandbox the new software and try it out
PS C:\Program Files\Saxonica\SaxonHEC1.2.1\Saxon.C.API\python-saxon> get-executionpolicy
Bypass
#sometimes Powershell has permission restrictions on scripts running just checking here
$Env:PYTHONPATH += ";C:\Program Files\Saxonica\SaxonHEC1.2.1\Saxon.C.API\python-saxon" #PYTHONPATH env variable was blank ahead of this
python saxon-setup.py build_ext -if需要一段时间才能讨好
readme.txt说要安装文档化,但是没有找到:
(xml) C:\Users\rick>pydoc -w saxonc
No Python documentation found for 'saxonc'.https://stackoverflow.com/questions/66750309
复制相似问题