{"id":681,"date":"2024-02-29T10:58:21","date_gmt":"2024-02-29T02:58:21","guid":{"rendered":"https:\/\/www.91tfboys.com\/?p=681"},"modified":"2024-02-29T10:58:23","modified_gmt":"2024-02-29T02:58:23","slug":"windows-python-%e5%ae%89%e8%a3%85-plyvel","status":"publish","type":"post","link":"https:\/\/www.91tfboys.com\/?p=681","title":{"rendered":"Windows Python \u5b89\u88c5 plyvel"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u5728 Windows \u4e0a\u5b89\u88c5 Python \u7684 LevelDB \u5e93 plyvel \u65f6\uff0c\u4f1a\u9047\u5230\u62a5\u9519\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fatal error C1083: Cannot open include file: 'leveldb\/db.h': No such file or directory<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u89e3\u51b3\u6b65\u9aa4\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u5b89\u88c5 vcpkg \u5e93\u3002\u8fd9\u662f\u6765\u81ea\u5fae\u8f6f\u7684 C\/C++ \u5305\u7ba1\u7406\u7a0b\u5e8f\uff0c<a href=\"https:\/\/github.com\/microsoft\/vcpkg\">\u5f00\u6e90<\/a>\u3002<a href=\"https:\/\/github.com\/microsoft\/vcpkg\/blob\/master\/README_zh_CN.md\">\u5b89\u88c5\u65b9\u5f0f<\/a>\u5982\u4e0b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/microsoft\/vcpkg<br>.\\vcpkg\\bootstrap-vcpkg.bat<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u4f7f\u7528 vcpkg \u5b89\u88c5 leveldb \u5e93\u548c\u5934\u6587\u4ef6\u3002\u6ce8\u610f\u8fd9\u91cc\u8981\u6839\u636e\u7f16\u8bd1\u7684\u76ee\u6807\u5e73\u53f0\u533a\u5206\u662fx86\u548cx64\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\\vcpkg\\vcpkg install leveldb --triplet=x64-windows<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u7136\u540e\u5728\u6267\u884c pip \u65f6\u52a0\u4e0a\u5982\u4e0b\u53c2\u6570\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install plyvel --config-settings=build_ext --config-settings=\"-I&#91;PATH TO vcpkg]\\installed\\x64-<br>windows\\include\" --config-settings=\"-L&#91;PATH TO vcpkg]\\installed\\x64-windows\\lib\" --config-settings=\"-lleveldb\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">build_ext \u547d\u4ee4\u7684\u53c2\u6570\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Options for 'build_ext' command:\n--build-lib (-b) directory for compiled extension modules\n--build-temp (-t) directory for temporary files (build by-products)\n--plat-name (-p) platform name to cross-compile for, if supported (default: linux-x86_64)\n--inplace (-i) ignore build-lib and put compiled extensions into the source directory alongside your pure Python modules\n<strong>--include-dirs (-I) list of directories to search for header files (separated by ':')\n<\/strong>--define (-D) C preprocessor macros to define\n--undef (-U) C preprocessor macros to undefine\n<strong>--libraries (-l) external C libraries to link with\n--library-dirs (-L) directories to search for external C libraries (separated by ':')\n<\/strong>--rpath (-R) directories to search for shared C libraries at runtime\n--link-objects (-O) extra explicit link objects to include in the link\n--debug (-g) compile\/link with debugging information\n--force (-f) forcibly build everything (ignore file timestamps)\n--compiler (-c) specify the compiler type\n--swig-cpp make SWIG create C++ files (default is C)\n--swig-opts list of SWIG command line options\n--swig path to the SWIG executable\n--user add user include, library and rpath\n--help-compiler list available compilers<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0a\u8ff0\u7528\u5230\u7684\u53c2\u6570\u4e3a\u6307\u5b9a include \u76ee\u5f55\u7684 -I\u3001\u6307\u5b9a\u5e93\u76ee\u5f55\u7684 -L \u548c\u6307\u5b9a\u5e93\u7684 -l\uff0c\u5373\u547d\u4ee4\u5217\u8868\u4e2d\u52a0\u7c97\u7684\u90e8\u5206\u3002\u53c2\u6570\u540e\u76f4\u63a5\u8ddf\u8def\u5f84\u6216\u5e93\u540d\u3002\u4e0a\u8ff0\u5b8c\u6574\u547d\u4ee4\u5982\u4e0b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install plyvel --global-option=build_ext --global-option=\"-LC:\\Users\\User\\basedir\\vcpkg\\installed\\x64-windows\\include\" --global-option=\"-LC:\\Users\\User\\basedir\\vcpkg\\installed\\x64-windows\\lib\" --global-option=\"-lleveldb\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u53c2\u8003\u8d44\u6599\uff1a<br>[1] python\u5b89\u88c5plyvel\u62a5\u9519\u627e\u4e0d\u5230leveldb\u5934\u6587\u4ef6. https:\/\/zhuanlan.zhihu.com\/p\/666308201<br>[2] vcpkg overview. https:\/\/learn.microsoft.com\/en-us\/vcpkg\/<br>[3] vcpkg. https:\/\/github.com\/microsoft\/vcpkg<br>[4] python pip specify a library directory and an include directory. https:\/\/stackoverflow.com\/questions\/18783390\/python-pip-specify-a-library-directory-and-an-include-directory<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728 Windows \u4e0a\u5b89\u88c5 Python \u7684 LevelDB \u5e93 plyvel \u65f6\uff0c\u4f1a\u9047\u5230\u7f3a\u5c11\u76f8\u5173\u4f9d\u8d56\u7684\u62a5\u9519\uff0c\u672c\u6587\u9488\u5bf9\u8fd9\u4e00\u9519\u8bef\u8fdb\u884c\u5904\u7406\u3002<\/p>\n","protected":false},"author":1,"featured_media":682,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[18],"class_list":["post-681","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-coding","tag-python"],"_links":{"self":[{"href":"https:\/\/www.91tfboys.com\/index.php?rest_route=\/wp\/v2\/posts\/681","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.91tfboys.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.91tfboys.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.91tfboys.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.91tfboys.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=681"}],"version-history":[{"count":2,"href":"https:\/\/www.91tfboys.com\/index.php?rest_route=\/wp\/v2\/posts\/681\/revisions"}],"predecessor-version":[{"id":684,"href":"https:\/\/www.91tfboys.com\/index.php?rest_route=\/wp\/v2\/posts\/681\/revisions\/684"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.91tfboys.com\/index.php?rest_route=\/wp\/v2\/media\/682"}],"wp:attachment":[{"href":"https:\/\/www.91tfboys.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.91tfboys.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.91tfboys.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}