【问题标题】:Gather all Python modules used into one folder? [duplicate]将所有使用的 Python 模块收集到一个文件夹中? [复制]
【发布时间】:2010-10-28 19:44:25
【问题描述】:

可能重复:
Gather all Python modules used into one folder?

我认为以前没有人问过这个问题——我有一个包含许多不同 .py 文件的文件夹。我制作的脚本只使用了一些——但有些调用了其他的,我不知道所有正在使用的脚本。是否有一个程序可以获取使该脚本运行到一个文件夹所需的一切?

干杯!

【问题讨论】:

标签: python


【解决方案1】:

由于 Python 不是静态链接语言,因此这项任务将是一项颇具挑战性的任务。特别是如果您的某些代码使用eval(...)exec(...)

如果您的脚本不是很大,我会将其移出,确保您的 python.exe 不会从该目录加载模块,并且会运行该脚本并添加缺少的模块,直到它工作为止。

如果您有多个这样的脚本,那么这种手动工作并不是真正可行的方法。但是在这种情况下,在一个目录中还有很多不同的 .py 文件并不是一种好的部署技术,您应该考虑将它们打包到 可安装 模块中并安装到您的 python 站点包中。

您仍然可以使用snakefood 包来查找我们的依赖项(已经讨论过here)。同样,它不能 100% 准确,但应该让您轻松开始。

【讨论】:

    【解决方案2】:

    您应该能够从所谓的调用图

    中提取所需的信息

    参见示例

    此外,py2exe 将 python 调用转换为可执行文件,并在此过程中收集所有使用的模块。我认为py2exe是跨平台的

    【讨论】:

      【解决方案3】:

      我会尝试 2½ 个解决方案,一个是精心设计的,一个是 1½ 个快速而简单的:

      • 详细说明:自定义导入挂钩,记录所有导入
      • 又快又脏,a 部分:os.utime *.py[co]? (re 表示法,而不是 glob)文件到昨天的访问时间,然后运行程序并收集所有最近的访问时间。先决条件:一个标记访问时间的文件系统(通过它自己和它的挂载选项)。
      • 又快又脏,b 部分:删除所有 *.py[co] 文件(在 globre 表示法中相同),运行程序,查看已创建的文件。先决条件:用户应具有对该文件夹的写入权限。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-20
        • 1970-01-01
        • 2019-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多