如何在python3中列出脚本使用的所有python包

7 浏览
0 Comments

如何在python3中列出脚本使用的所有python包

有一些我已经阅读过的类似问题,但它们似乎都只针对Python 2.x的方法,而我正在使用Python 3.x。

我有一个Python文件,称之为test.py,它有许多包导入(例如import numpy as np),但它还导入了其他一些文件,我们称之为subTest1.py和subTest2.py。每个subTest文件都有它们自己的导入(可能是其他文件和包)。有没有一种自动获取运行主脚本(test.py)所需的所有包的方法?

我知道pip freeze可以显示我安装的所有包,但这不是我想要的 - 可能安装了一个不需要运行test.py脚本的包。

类似的问题,但针对Python 2.x:

Return a list of imported Python modules used in a script?

Get all modules/packages used by a python project

似乎是特定于Python 2.x的包:

snakefood

pipreqs

pipreqs失败的原因:

跟踪(最近的调用最先):

  文件“c:\ anaconda36 \ envs \ tensorflow \ lib \ runpy.py”,第193行,_run_module_as_main

    “__main__”,mod_spec)

  文件“c:\ anaconda36 \ envs \ tensorflow \ lib \ runpy.py”,第85行,_run_code

    执行(代码,run_globals)

  文件“C:\ Anaconda36 \ envs \ tensorflow \ Scripts \ pipreqs.exe \ __main__.py”,第9行,在

  文件“c:\ anaconda36 \ envs \ tensorflow \ lib \ site-packages \ pipreqs \ pipreqs.py”,第396行,主要

    init(args)

  文件“c:\ anaconda36 \ envs \ tensorflow \ lib \ site-packages \ pipreqs \ pipreqs.py”,第341行,init

    extra_ignore_dirs = extra_ignore_dirs)

  文件“c:\ anaconda36 \ envs \ tensorflow \ lib \ site-packages \ pipreqs \ pipreqs.py”,第91行,get_all_imports

    raise exc

  文件“c:\ anaconda36 \ envs \ tensorflow \ lib \ site-packages \ pipreqs \ pipreqs.py”,第77行,get_all_imports

    tree = ast.parse(contents)

  文件“c:\ anaconda36 \ envs \ tensorflow \ lib \ ast.py”,第35行,parse

    返回编译(源,文件名,模式,PyCF_ONLY_AST)

  文件“”,第49行

    print vsize

             ^

语法错误:调用'print'时缺少括号

0
0 Comments

问题的出现原因:

用户想要找到一个方法来列出Python脚本中使用的所有Python包,以便能够查看脚本所依赖的包。然而,用户发现在Python3中,常用的方法`pip freeze`只会列出当前环境中安装的包,而不是脚本所使用的包。

解决方法:

用户可以按照以下步骤来解决这个问题:

  1. 安装gunicorn包: pip3 install gunicorn
  2. 在项目目录中,输入以下命令: pip3 freeze > requirements.txt

这个`requirements.txt`文件将会列出项目目录中使用的所有包。

这样,用户就可以通过查看`requirements.txt`文件来获取脚本所使用的所有Python包。

0
0 Comments

问题的出现原因:

该问题的提出者在谷歌上找到了一个脚本,该脚本可以列出Python脚本中使用的所有包。然而,该脚本是针对Python 2版本编写的,而提问者想要在Python 3下使用。因此,他对脚本进行了更新,即将print函数改为适用于Python 3的形式,以确保脚本在Python 3下能够正常运行。

解决方法:

提问者提供了一个解决方法,即使用modulefinder模块来列出Python脚本中使用的所有包。他在脚本中导入了ModuleFinder类,并使用它来运行指定的Python脚本。然后,他通过将导入的模块名称按照根模块进行排序,将它们以漂亮的格式打印出来。

具体的解决方法如下所示:

from modulefinder import ModuleFinder
# 创建ModuleFinder对象
f = ModuleFinder()
# 运行指定的Python脚本
f.run_script('test.py')
# 获取所有已导入模块的名称
names = list(f.modules.keys())
# 获取已导入根模块的排序列表
basemods = sorted(set([name.split('.')[0] for name in names]))
# 以漂亮的格式打印出来
print("\n".join(basemods))

要使用这个解决方法,只需将`test.py`替换为您想要检查的任何文件名,然后从终端运行该脚本:

python module_finder_script.py

如果这个解决方法对您有帮助,请告诉我。

0
0 Comments

问题的原因是用户想要找到一个方法来列出Python脚本中使用的所有包,以便于管理和共享依赖关系。解决方法是使用pipreqs包来生成一个包含脚本所需所有依赖项的requirements.txt文件。

以下是解决问题的步骤:

1. 首先,用户需要安装pipreqs包。可以使用以下命令在Python3中安装pipreqs包:

pip3 install pipreqs

2. 安装完成后,用户可以使用以下命令来生成requirements.txt文件:

pipreqs ./your_script_directory

这将在脚本目录中生成一个名为requirements.txt的文件,其中包含所有的依赖项。

3. 如果用户遇到pipreqs运行失败的问题,可能是由于使用的Python版本不兼容导致的。用户可以尝试使用pip3命令来安装pipreqs包,以确保使用的是Python3版本的pip。可以使用以下命令卸载和重新安装pipreqs包:

pip uninstall pipreqs
pip3 install pipreqs

4. 如果问题仍然存在,用户可以尝试创建一个新的conda环境,并在该环境中运行脚本。可以使用以下命令创建一个名为myenv的新conda环境,并指定Python版本为3.8:

conda create -n myenv python=3.8

然后,用户可以在新的conda环境中运行上述命令。

要列出Python脚本中使用的所有包,用户可以使用pipreqs包来生成requirements.txt文件。如果遇到运行失败的问题,用户可以尝试使用pip3来安装和运行pipreqs,并在必要时创建新的conda环境来解决问题。

0