PyInstall не работает на Kali Linux

Я пытаюсь использовать pyinstaller в Kali Linux для компиляции программы на Python, но когда я запускаю ее, у меня возникает проблема:

root@kali:/usr/bin# ./pyinstaller ~/Desktop/neighbourhood.py 
14 INFO: wrote /usr/share/pyinstaller/neighbourhood/neighbourhood.spec
44 INFO: UPX is available.
520 INFO: checking Analysis
520 INFO: building Analysis because out00-Analysis.toc non existent
522 INFO: running Analysis out00-Analysis.toc
575 INFO: Analyzing /usr/share/pyinstaller/support/_pyi_bootstrap.py
1022 INFO: Analyzing /usr/share/pyinstaller/PyInstaller/loader/archive.py
1058 INFO: Analyzing /usr/share/pyinstaller/PyInstaller/loader/carchive.py
1107 INFO: Analyzing /usr/share/pyinstaller/PyInstaller/loader/iu.py
1121 INFO: Analyzing /root/Desktop/neighbourhood.py
2964 INFO: checking Tree
2964 INFO: building because out00-Tree.toc missing or bad
2964 INFO: building Tree out00-Tree.toc
2996 INFO: checking Tree
2996 INFO: building because out01-Tree.toc missing or bad
2996 INFO: building Tree out01-Tree.toc
Traceback (most recent call last):
  File "./pyinstaller.py", line 91, in <module>
    main()
  File "./pyinstaller.py", line 86, in main
    run_build(opts, spec_file)
  File "./pyinstaller.py", line 50, in run_build
    PyInstaller.build.main(spec_file, **opts.__dict__)
  File "/usr/share/pyinstaller/PyInstaller/build.py", line 1625, in main
    build(specfile, buildpath)
  File "/usr/share/pyinstaller/PyInstaller/build.py", line 1582, in build
    execfile(spec)
  File "/usr/share/pyinstaller/neighbourhood/neighbourhood.spec", line 5, in <module>
    hookspath=None)
  File "/usr/share/pyinstaller/PyInstaller/build.py", line 389, in __init__
    self.__postinit__()
  File "/usr/share/pyinstaller/PyInstaller/build.py", line 315, in __postinit__
    self.assemble()
  File "/usr/share/pyinstaller/PyInstaller/build.py", line 475, in assemble
    importTracker.analyze_script(script)
  File "/usr/share/pyinstaller/PyInstaller/depend/imptracker.py", line 205, in analyze_script
    return self.analyze_r('__main__')
  File "/usr/share/pyinstaller/PyInstaller/depend/imptracker.py", line 98, in analyze_r
    newnms = self.analyze_one(name, nm, imptyp, level)
  File "/usr/share/pyinstaller/PyInstaller/depend/imptracker.py", line 159, in analyze_one
    mod = self.doimport(nm, ctx, fqname)
  File "/usr/share/pyinstaller/PyInstaller/depend/imptracker.py", line 256, in doimport
    hooks = __import__('PyInstaller.hooks', globals(), locals(), [hookmodnm])
TypeError: Item in ``from list'' not a string

Я не знаю, проблема ли это, но у меня есть pyinstaller во многих папках.

root@kali:~# whereis pyinstaller
pyinstaller: /usr/bin/pyinstaller /usr/local/bin/pyinstaller /usr/share/pyinstaller

Я следую учебнику на YouTube, и он запускает эту команду:

./pyinstaller setup.py

но я не могу найти setup.py в папке pyinstaller. Если запустить pyinstaller без косой черты, я получу следующее:

root@kali:~# pyinstaller No handlers could be found for logger "PyInstaller.utils.misc"

Кто-нибудь знает, как это исправить? Спасибо вам!


person Syrion    schedule 09.01.2016    source источник
comment
Kali linux предназначен для тестирования на проникновение, это не дистрибутив GNU/Linux общего назначения.   -  person Jared Smith    schedule 12.09.2018


Ответы (1)


Если whereis показывает вам пути, то pyinstaller находится в вашем PATH. Это означает, что вам не нужен префикс с косой чертой для запуска pyinstaller. Запустите pyinstaller --version, чтобы убедиться, что он работает без префикса ./.

Учтите, что выходной каталог будет создан в каталоге, в котором вы сейчас находитесь. В вашем случае /usr/bin, что довольно странно. Кроме того, я не совсем понимаю, почему вы используете для этого пользователя root.

Итак, было бы лучше, если бы вы сначала сменили каталог на тот, где находится ваш скрипт:

$ cd ~/Desktop/neighbourhood.py

Затем скомпилируйте программу:

$ pyinstaller neighbourhood.py

Что касается ошибки, с которой вы столкнулись. Трудно сказать, что происходит. Вероятно, это проблема с именем модуля, динамически передаваемым в import python. См. дополнительную информацию здесь. Если у вас есть выбор между Python 2 и Python 3, используйте последний, чтобы избежать подобных проблем.

И последнее, но не менее важное: я настоятельно рекомендую вам использовать официальную документацию вместо руководств на YouTube.

person vrs    schedule 09.01.2016
comment
Когда я запускаю его без косой черты, я получаю это: root@kali:~# pyinstaller Не удалось найти обработчики для регистратора PyInstaller.utils.misc - person Syrion; 10.01.2016
comment
@Syrion Похоже, вы используете старую версию pyinstaller. В старых версиях была ошибка, не позволявшая использовать pyinstaller под root (см. это обсуждение ). Проверьте свою версию с помощью ./pyinstaller --version. Текущая стабильная версия 3.1. Я не знаю, как вы установили pyinstaller, но предлагаю вам обновиться. Если вы установили его с помощью pip, обновите его до pip install --upgrade pyinstaller (подробности см. здесь) - person vrs; 10.01.2016