有一些文件和文件夹的目录有一些编程模块,如Perl模块,python文件和一些其他shell文件。在python(.py)中有一个主文件来完成一些任务,这需要一些模块不是全部。
考虑一个主python文件导入其他一些python文件的场景,在代码中它使用os.system(' perl perl_filename.pm')这个perl_filename它自己调用其他perl模块和python文件介于两者之间。
如何在执行结束时找到此主python文件使用的所有文件和模块。一种解决方案是从头开始读取代码并通过读取代码查找依赖关系。但是代码库是如此之大这是不可行的。
答案 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