не могу добавить xgboost в pyinstaller - PullRequest
       20

не могу добавить xgboost в pyinstaller

2 голосов
/ 27 сентября 2019

мой код на python включает библиотеку xgboost, и теперь я пытаюсь создать exe, используя pyinstaller.Конверт:

68 INFO: PyInstaller: 4.0.dev0+8196c57ab
69 INFO: Python: 3.6.9 (conda)
70 INFO: Platform: Windows-10-10.0.17763-SP0

Я тестировал запуск .py из командной строки в этом конверте.

Я нашел связанные файлы в env: dll, VERSION и в папке и вручную добавил их: (после this ) (я разбил команду на новые строки длячитабельность)

(py36_PP) C:\Users\MarkZ\G_project\Model>pyinstaller PPP_2_main.py -F 
--add-data "C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\envs\py36_PP\Lib\site-packages\xgboost\*;xgboost/" 
--add-data "C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\envs\py36_PP\Lib\site-packages\xgboost\VERSION;xgboost/" 
--add-data "C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\envs\py36_PP\Library\mingw-w64\bin\xgboost.dll;xgboost/"

Как я нашел эти пути:

(1) импортировать эту библиотеку в python и увидеть ее атрибут

(py36_PP) C:\Users\MarkZ\GRS-PP-churn-project\Model>python
Python 3.6.9 |Anaconda, Inc.| (default, Jul 30 2019, 14:00:49) [MSC v.1915 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import xgboost
>>> print(xgboost.__file__)
C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\envs\py36_PP\lib\site-packages\xgboost\__init__.py

(2)search:

(base) C:\Users\MarkZ\AppData\Local\Continuum\anaconda3>dir /s *xgboost*
 Volume in drive C is OSDisk
 Volume Serial Number is F0FE-4464

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\conda-meta

09/16/2019  01:58 PM            11,072 libxgboost-0.90-0.json
09/16/2019  01:58 PM            11,048 py-xgboost-0.90-py37_0.json
09/16/2019  01:58 PM             1,134 _py-xgboost-mutex-2.0-cpu_0.json
               3 File(s)         23,254 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\envs\py36_PP\conda-meta

09/27/2019  01:45 AM            11,022 libxgboost-0.90-0.json
09/27/2019  01:45 AM            10,998 py-xgboost-0.90-py36_0.json
09/27/2019  01:45 AM             1,084 _py-xgboost-mutex-2.0-cpu_0.json
               3 File(s)         23,104 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\envs\py36_PP\Lib\site-packages

09/27/2019  01:45 AM    <DIR>          xgboost
               0 File(s)              0 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\envs\py36_PP\Library\mingw-w64\bin

06/07/2019  02:23 PM         4,128,032 xgboost.dll
06/07/2019  02:23 PM         4,218,018 xgboost.exe
               2 File(s)      8,346,050 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\envs\py36_PP\Library\mingw-w64\include

09/27/2019  01:45 AM    <DIR>          xgboost
               0 File(s)              0 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\envs\py36_PP\Library\mingw-w64\lib

06/07/2019  02:23 PM         7,035,268 libxgboost.a
               1 File(s)      7,035,268 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\Lib\site-packages

09/16/2019  01:58 PM    <DIR>          xgboost
               0 File(s)              0 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\Library\mingw-w64\bin

06/07/2019  02:23 PM         4,128,032 xgboost.dll
06/07/2019  02:23 PM         4,218,018 xgboost.exe
               2 File(s)      8,346,050 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\Library\mingw-w64\include

09/16/2019  01:58 PM    <DIR>          xgboost
               0 File(s)              0 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\Library\mingw-w64\lib

06/07/2019  02:23 PM         7,035,268 libxgboost.a
               1 File(s)      7,035,268 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\pkgs

09/27/2019  01:45 AM    <DIR>          libxgboost-0.90-0
09/16/2019  01:58 PM         1,913,797 libxgboost-0.90-0.conda
09/27/2019  01:45 AM         4,050,208 libxgboost-0.90-0.tar.bz2
09/27/2019  01:45 AM    <DIR>          py-xgboost-0.90-py36_0
09/27/2019  01:45 AM            78,382 py-xgboost-0.90-py36_0.tar.bz2
09/16/2019  01:58 PM    <DIR>          py-xgboost-0.90-py37_0
09/16/2019  01:58 PM            76,618 py-xgboost-0.90-py37_0.conda
09/27/2019  01:45 AM    <DIR>          _py-xgboost-mutex-2.0-cpu_0
09/16/2019  01:58 PM             9,208 _py-xgboost-mutex-2.0-cpu_0.conda
09/27/2019  01:45 AM             9,140 _py-xgboost-mutex-2.0-cpu_0.tar.bz2
               6 File(s)      6,137,353 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\pkgs\libxgboost-0.90-0\info\recipe

05/28/2019  11:57 AM               959 install-libxgboost.sh
               1 File(s)            959 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\pkgs\libxgboost-0.90-0\info\recipe\parent

06/06/2019  04:41 PM             2,814 0001-conda-Unbundle-libxgboost.-dll-dylib-so.patch
05/28/2019  11:57 AM               959 install-libxgboost.sh
05/28/2019  11:57 AM               159 install-py-xgboost.sh
06/07/2019  02:06 PM               292 install-r-xgboost.sh
05/28/2019  11:57 AM               736 test-py-xgboost.py
05/28/2019  11:57 AM             1,601 test-r-xgboost.r
               6 File(s)          6,561 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\pkgs\libxgboost-0.90-0\Library\mingw-w64\bin

06/07/2019  02:23 PM         4,128,032 xgboost.dll
06/07/2019  02:23 PM         4,218,018 xgboost.exe
               2 File(s)      8,346,050 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\pkgs\libxgboost-0.90-0\Library\mingw-w64\include

09/27/2019  01:45 AM    <DIR>          xgboost
               0 File(s)              0 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\pkgs\libxgboost-0.90-0\Library\mingw-w64\lib

06/07/2019  02:23 PM         7,035,268 libxgboost.a
               1 File(s)      7,035,268 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\pkgs\py-xgboost-0.90-py36_0\info\recipe

05/28/2019  11:57 AM               159 install-py-xgboost.sh
               1 File(s)            159 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\pkgs\py-xgboost-0.90-py36_0\info\recipe\parent

06/06/2019  04:41 PM             2,814 0001-conda-Unbundle-libxgboost.-dll-dylib-so.patch
05/28/2019  11:57 AM               959 install-libxgboost.sh
05/28/2019  11:57 AM               159 install-py-xgboost.sh
06/07/2019  02:06 PM               292 install-r-xgboost.sh
05/28/2019  11:57 AM               736 test-py-xgboost.py
05/28/2019  11:57 AM             1,601 test-r-xgboost.r
               6 File(s)          6,561 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\pkgs\py-xgboost-0.90-py36_0\Lib\site-packages

09/27/2019  01:45 AM    <DIR>          xgboost
               0 File(s)              0 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\pkgs\py-xgboost-0.90-py37_0\info\recipe

05/28/2019  11:57 AM               159 install-py-xgboost.sh
               1 File(s)            159 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\pkgs\py-xgboost-0.90-py37_0\info\recipe\parent

06/06/2019  04:41 PM             2,814 0001-conda-Unbundle-libxgboost.-dll-dylib-so.patch
05/28/2019  11:57 AM               959 install-libxgboost.sh
05/28/2019  11:57 AM               159 install-py-xgboost.sh
06/07/2019  02:06 PM               292 install-r-xgboost.sh
05/28/2019  11:57 AM               736 test-py-xgboost.py
05/28/2019  11:57 AM             1,601 test-r-xgboost.r
               6 File(s)          6,561 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\pkgs\py-xgboost-0.90-py37_0\Lib\site-packages

09/16/2019  01:58 PM    <DIR>          xgboost
               0 File(s)              0 bytes

 Directory of C:\Users\MarkZ\AppData\Local\Continuum\anaconda3\pkgs\_py-xgboost-mutex-2.0-cpu_0\info\recipe\parent

06/28/2018  06:15 PM             2,500 0001-conda-Unbundle-libxgboost.-dll-dylib-so.patch
06/28/2018  06:15 PM               959 install-libxgboost.sh
06/28/2018  06:15 PM               159 install-py-xgboost.sh
06/28/2018  06:15 PM               521 install-r-xgboost.sh
06/28/2018  06:15 PM               736 test-py-xgboost.py
06/28/2018  06:15 PM             1,601 test-r-xgboost.r
               6 File(s)          6,476 bytes

     Total Files Listed:
              48 File(s)     52,355,101 bytes
              11 Dir(s)  34,365,415,424 bytes free

И он все еще не может загрузить xgboost:

(py36_PP) C:\Users\MarkZ\G_project\Model>dist\PPP_2_main
Traceback (most recent call last):
  File "PPP_2_main.py", line 28, in <module>
    import xgboost as xgb
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "c:\users\MarkZ\appdata\local\continuum\anaconda3\envs\py36_pp\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 621, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\xgboost\__init__.py", line 11, in <module>
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "c:\users\MarkZ\appdata\local\continuum\anaconda3\envs\py36_pp\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 621, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\xgboost\core.py", line 161, in <module>
  File "site-packages\xgboost\core.py", line 123, in _load_lib
  File "site-packages\xgboost\libpath.py", line 52, in find_lib_path
xgboost.libpath.XGBoostLibraryNotFound: Cannot find XGBoost Library in the candidate path, did you install compilers and run build.sh in root path?
List of candidates:
C:\Users\MarkZ\AppData\Local\Temp\_MEI234002\Library\mingw-w64\bin\xgboost.dll
C:\Users\MarkZ\AppData\Local\Temp\_MEI234002\xgboost\../../windows/x64/Release/xgboost.dll
C:\Users\MarkZ\AppData\Local\Temp\_MEI234002\xgboost\./windows/x64/Release/xgboost.dll
[18264] Failed to execute script PPP_2_main

Похоже, pyinstaller не может найти xgboost - должен ли я добавить путь кVERSION файл или dll?Спасибо

1 Ответ

1 голос
/ 28 сентября 2019

Файлы VERSION и DLL необходимы для комплектации приложения.В virtualenv файлы xgboost находятся в <python_path>/xgboost, а файл VERSION находится в <python_path>/Lib/site-packages/xgboost.

Так что я думаю, что вам нужна команда:

(py36_PP) > pyinstaller myscript.py -F --add-data "C:/Users/MarkZ/AppData/Local/Continuum/anaconda3/envs/py36_PP/xgboost/*;xgboost/" --add-data "C:/Users/MarkZ/AppData/Local/Continuum/anaconda3/envs/py36_PP/Lib/site-packages/xgboost/VERSION;xgboost/"
...