将所有使用的Python模块收集到一个文件夹中?

时间:2009-05-25 20:31:01

标签: python

  

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

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

干杯!

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

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

中提取所需的信息

参见例如

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

答案 2 :(得分:0)

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

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