Question

I am trying to understand a project's source code these days. I run the project, line by line, everything works fine until this line:

res = subprocess.call(command, env=os.environ)

I checked the variable "command" and realized that this function just throw a command to another python script and try to execute it in a subprocess. So I jumped out of Eclipse, and tried to execute the command through Terminal while under the same directory.

Now this is what I got:

Traceback (most recent call last):
  File "/home/elderry/Projects/git/tahoe-lafs/support/bin/tahoe", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2850, in <module>
    working_set.require(__requires__)
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 696, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 594, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: allmydata-tahoe==1.10.0.post27

Then I completely lost my direction, where did the subprocess continue to run? Why did the script work well in program but not in Terminal? Since that script is also included in the project, with some hope I set some break points in it in Eclipse, which didn't catch anything. Is there any way to debug into the subprocess, not dive into the code of subprocess module's code itself?

Was it helpful?

Solution

I guess your main project alters PYTHONPAH (sys.path). Look in os.environ of your project and try to run second script with this environment.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top