Как перечислить все пакеты Python, используемые скриптом в Python3 - PullRequest
0 голосов
/ 06 ноября 2019

Некоторые из этих вопросов я прочитал, но все они, похоже, связаны с методами исключительно для python 2.x, а я работаю в python 3.x.

У меня есть pythonfile, назовите его test.py, он имеет ряд импортов пакетов (например, import numpy as np), но также импортирует некоторые другие файлы, назовем их subTest1.py и subTest2.py. Каждый из файлов subTest имеет свой собственный импорт (возможно, как другие файлы, так и пакеты). Есть ли автоматический способ получения списка всех пакетов, необходимых для запуска скрипта маршрута (test.py)?

Я знаю, что pip freeze показывает мне все установленные пакеты, но это не то, что яищите - может быть установлен пакет, который не требуется для запуска сценария test.py.

Вопросы, похожие на python 2.x:

Вернуть список импортированных модулей Python, используемых в скрипте?

Получить все модули / пакеты, используемые проектом Python

Пакетыкоторые специфичны для python 2.x:

snakefood

pipreqs

Там, где pipreqs терпит неудачу:

Traceback (most recent call last):
  File "c:\anaconda36\envs\tensorflow\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\anaconda36\envs\tensorflow\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Anaconda36\envs\tensorflow\Scripts\pipreqs.exe\__main__.py", line 9, in <module>
  File "c:\anaconda36\envs\tensorflow\lib\site-packages\pipreqs\pipreqs.py", line 396, in main
    init(args)
  File "c:\anaconda36\envs\tensorflow\lib\site-packages\pipreqs\pipreqs.py", line 341, in init
    extra_ignore_dirs=extra_ignore_dirs)
  File "c:\anaconda36\envs\tensorflow\lib\site-packages\pipreqs\pipreqs.py", line 91, in get_all_imports
    raise exc
  File "c:\anaconda36\envs\tensorflow\lib\site-packages\pipreqs\pipreqs.py", line 77, in get_all_imports
    tree = ast.parse(contents)
  File "c:\anaconda36\envs\tensorflow\lib\ast.py", line 35, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)
  File "<unknown>", line 49
    print vsize
              ^
SyntaxError: Missing parentheses in call to 'print'

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Вы можете использовать pipreqs пакет. ( Документы )

Для установки:

pip3 install pipreqs

Использование:

pipreqs ./your_script_directory

Создает файл requirements.txt в каталоге сценариев свсе используемые зависимости.

0 голосов
/ 06 ноября 2019

Я нашел этот скрипт в Google, и он, кажется, работает, я обновил его для Python 3 (только функция печати), я проверил его, и он перечисляет модули, но я считаю, что он идет слишком глубоко подмодули, но стоит попробовать.

from modulefinder import ModuleFinder
f = ModuleFinder()

# Run the main script
f.run_script('test.py')

# Get names of all the imported modules
names = list(f.modules.keys())

# Get a sorted list of the root modules imported
basemods = sorted(set([name.split('.')[0] for name in names]))
# Print it nicely
print("\n".join(basemods))

просто измените test.py в любом имени файла, которое вы хотите проверить. и затем запустите скрипт из терминала

python module_finder_script.py

, дайте мне знать, если это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...