查找python脚本所需的模块

时间:2016-09-29 06:53:07

标签: python linux bash perl scripting

有一些文件和文件夹的目录有一些编程模块,如Perl模块,python文件和一些其他shell文件。在python(.py)中有一个主文件来完成一些任务,这需要一些模块不是全部。

考虑一个主python文件导入其他一些python文件的场景,在代码中它使用os.system(' perl perl_filename.pm')这个perl_filename它自己调用其他perl模块和python文件介于两者之间。

如何在执行结束时找到此主python文件使用的所有文件和模块。一种解决方案是从头开始读取代码并通过读取代码查找依赖关系。但是代码库是如此之大这是不可行的。

2 个答案:

答案 0 :(得分:3)

这个问题太宽泛了。我想你应该看看snakefood,这将有助于你找到依赖关系。

sfood -fuq main_file.py | sfood-target-files 

答案 1 :(得分:0)

我的第一个猜测,简单,但肯定不是最佳方法,是使用lsof来显示此脚本打开的文件。例如:

$ sudo lsof | grep 31454 | grep python
carbon-ca 31454      carbon  txt       REG                9,2       4864     660953 /usr/bin/python
carbon-ca 31454      carbon  mem       REG                9,2      11608     785876 /usr/lib64/python2.6/lib-dynload/resource.so
carbon-ca 31454      carbon  mem       REG                9,2      24432     785877 /usr/lib64/python2.6/lib-dynload/selectmodule.so
carbon-ca 31454      carbon  mem       REG                9,2      22240     785814 /usr/lib64/python2.6/lib-dynload/_heapq.so
carbon-ca 31454      carbon  mem       REG                9,2       9872     785794 /usr/lib64/python2.6/lib-dynload/_bisectmodule.so
carbon-ca 31454      carbon  mem       REG                9,2      67296     656787 /usr/lib64/python2.6/site-packages/OpenSSL/SSL.so
carbon-ca 31454      carbon  mem       REG                9,2      12848     670980 /usr/lib64/python2.6/site-packages/OpenSSL/rand.so
carbon-ca 31454      carbon  mem       REG                9,2      94496     662596 /usr/lib64/python2.6/site-packages/OpenSSL/crypto.so
carbon-ca 31454      carbon  mem       REG                9,2      21376     673621 /usr/lib64/python2.6/site-packages/twisted/python/_epoll.so
carbon-ca 31454      carbon  mem       REG                9,2      14632     785853 /usr/lib64/python2.6/lib-dynload/fcntlmodule.so
carbon-ca 31454      carbon  mem       REG                9,2      21608     785817 /usr/lib64/python2.6/lib-dynload/_localemodule.so
carbon-ca 31454      carbon  mem       REG                9,2       7744     787783 /usr/lib64/python2.6/lib-dynload/syslog.so
carbon-ca 31454      carbon  mem       REG                9,2      23784     785886 /usr/lib64/python2.6/lib-dynload/zlibmodule.so
carbon-ca 31454      carbon  mem       REG                9,2     123608     785806 /usr/lib64/python2.6/lib-dynload/_ctypes.so
carbon-ca 31454      carbon  mem       REG                9,2      12680     785823 /usr/lib64/python2.6/lib-dynload/_randommodule.so
carbon-ca 31454      carbon  mem       REG                9,2