Tool for finding external dependencies

R

Rob Cakebread

Hi,

I need to find external dependencies for modules (not Python standard
library imports).

Currently I use pylint and manually scan the output, which is very
nice, or use pylint's --ext-import-graph option to create a .dot file
and extract the info from it, but either way can take a very long
time.

I'm aware of Python's modulefinder.py, but it doesn't find external
dependencies (or at least I don't know how to make it do them).

Thanks,
Rob
 
K

kyosohma

Hi,

I need to find external dependencies for modules (not Python standard
library imports).

Currently I use pylint and manually scan the output, which is very
nice, or use pylint's --ext-import-graph option to create a .dot file
and extract the info from it, but either way can take a very long
time.

I'm aware of Python's modulefinder.py, but it doesn't find external
dependencies (or at least I don't know how to make it do them).

Thanks,
Rob

Recently I ran into some debugging issues and the freeware app
"Dependency Walker" was suggested to me. I still haven't used it much
since I only got it last Friday, but it looks promising:
http://www.dependencywalker.com

Mike
 
R

Rob Cakebread

Recently I ran into some debugging issues and the freeware app
"Dependency Walker" was suggested to me. I still haven't used it much
since I only got it last Friday, but it looks promising:http://www.dependencywalker.com

Mike

Thanks Mike, but I'm just trying to determine Python imports, like:

$ pylint g_pypi

[snip lots of other tests which take a lonnnnnng time]

External dependencies
---------------------
::

configobj (g_pypi.config)
portage (g_pypi.enamer,g_pypi.portage_utils,g_pypi.cli)
pkg_resources (g_pypi.cli,g_pypi.ebuild)
yolk
\-pypi (g_pypi.cli)
\-setuptools_support (g_pypi.cli)
\-yolklib (g_pypi.cli)
gentoolkit (g_pypi.portage_utils)
pygments (g_pypi.ebuild)
\-lexers (g_pypi.ebuild)
\-formatters (g_pypi.ebuild)
Cheetah
\-Template (g_pypi.ebuild)
 
K

kyosohma

Recently I ran into some debugging issues and the freeware app
"Dependency Walker" was suggested to me. I still haven't used it much
since I only got it last Friday, but it looks promising:http://www.dependencywalker.com

Thanks Mike, but I'm just trying to determine Python imports, like:

$ pylint g_pypi

[snip lots of other tests which take a lonnnnnng time]

External dependencies
---------------------
::

configobj (g_pypi.config)
portage (g_pypi.enamer,g_pypi.portage_utils,g_pypi.cli)
pkg_resources (g_pypi.cli,g_pypi.ebuild)
yolk
\-pypi (g_pypi.cli)
\-setuptools_support (g_pypi.cli)
\-yolklib (g_pypi.cli)
gentoolkit (g_pypi.portage_utils)
pygments (g_pypi.ebuild)
\-lexers (g_pypi.ebuild)
\-formatters (g_pypi.ebuild)
Cheetah
\-Template (g_pypi.ebuild)

Hmmm...I also use GUI2Exe, which may help you too. It'll list "missing
modules" and binary dependencies. It's basically a GUI interface to
py2exe:

http://xoomer.alice.it/infinity77/eng/GUI2Exe.html


This looks interesting, but I've never used it:

http://www.tarind.com/depgraph.html


Finally, here's some more info on modulefinder:

http://svn.python.org/projects/python/trunk/Lib/modulefinder.py

Looks like you run modulefinder like this:

<code>

mod = modulefinder.ModuleFinder()
mod.run_script(path/to/python_script.py)
mod.report()

</code>

Mike
 
R

Rob Cakebread

On Jul 9, 7:54 am, (e-mail address removed) wrote:
<code>

mod = modulefinder.ModuleFinder()
mod.run_script(path/to/python_script.py)
mod.report()

</code>

Mike

Nope. All of those tools and the code above show *all* imports/
dependencies, which is way too much information. I just need the
'external' dependencies, like in the example from pylint I pasted
above. If nothing exists I'll just have to figure out how pylint does
it.

I'm working on g-pypi which creates ebuilds for Gentoo Linux. For
packages that use setuptools I can get the dependencies easily enough
because of 'install_requires', but for packages that don't, I need
another way to find them.

Thanks,
Rob
 
A

Alex Popescu

On Jul 9, 7:54 am, (e-mail address removed) wrote:



Nope. All of those tools and the code above show *all* imports/
dependencies, which is way too much information. I just need the
'external' dependencies, like in the example from pylint I pasted
above. If nothing exists I'll just have to figure out how pylint does
it.

Isn't it possible to get from modulefinder what it has found and just
filter it out according to your rules?
This way you are in control and can deicde what is internal/external.

../alex
 
R

Rob Cakebread

Isn't it possible to get from modulefinder what it has found and just
filter it out according to your rules?
This way you are in control and can deicde what is internal/external.

At first glance it looked easy enough, by just filtering out
everything that isn't in site-packages, but that isn't quite accurate
as accurate as pylint and it also shows indirect dependencies too.
e.g. pkga imports pkgb, which imports pkgc. I don't want pkgc.

To clarify, if I had a module with:

import os,sys, re
import sqlobject

I only want to know about sqlobject. I don't want any of sqlobject's
dependencies, such as MySQLdb, pysqlite2, psycopg2 etc. which
modulefinder shows also.

And as far as I can tell, modulefinder needs a Python script, but its
much easier for me to find a package's modules automatically.


Thanks,
Rob
 
J

John J. Lee

Rob Cakebread said:
Hi,

I need to find external dependencies for modules (not Python standard
library imports).

Currently I use pylint and manually scan the output, which is very
nice, or use pylint's --ext-import-graph option to create a .dot file
and extract the info from it, but either way can take a very long
time.

I'm aware of Python's modulefinder.py, but it doesn't find external
dependencies (or at least I don't know how to make it do them).

Try looking at py2exe and pyinstaller. They may have useful ideas.


John
 
S

syt

Hi,

I need to find external dependencies for modules (not Python standard
library imports).

Currently I usepylintand manually scan the output, which is very
nice, or usepylint's--ext-import-graph option to create a .dot file
and extract the info from it, but either way can take a very long
time.

I'm aware of Python's modulefinder.py, but it doesn't find external
dependencies (or at least I don't know how to make it do them).

notice that you can launch pylint in the following way to disabling
everything but dependencies analysis : ::

pylint --enable-checker=imports yourproject

this will disable all others checkers and you may gain a signifiant
speedup.

-- Sylvain
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,767
Messages
2,569,571
Members
45,045
Latest member
DRCM

Latest Threads

Top