On 2:59 PM, Roy Hinkelman wrote:
I am posting here as well as a PHP list since I am now getting an odd python
error.

Rance: Thanks for the note. I get the same error with system or exec or
passthru

Now, this is very strange.

I made the command line string more explicit, and now it recognizes the .py
script but returns a python error:

Content:
Data: ImportError: No module named mechanize
Command: C:\WINDOWS\system32\cmd.exe C:\Program%20Files\Python26\python.exe
/c D:\Inetpub\AtoZ\hometown\include\weatherFeed.py -c Tampa -s FL

My python script will run correctly in IDE shell and from command line. I
used easy_install to install mechanize. It seems to be recognizing my other
modules (BeautifulSoup, re, urllib2, sys).

So, it seems that the script is being activated by the exec command since I
am now getting a python error. But, why would I get a python error when it
will run from command line?

Here is my PHP:
[code]
        <?PHP
                error_reporting(E_ALL);
                
                $city = 'Tampa';
                $state = 'FL';
                echo  '<p>OPTION 1<p>Python Weather Feed for ' . $city . ',
' . $state .'<p>';

                ob_start();
                $command = "C:\WINDOWS\system32\cmd.exe
C:\Program%20Files\Python26\python.exe /c
D:\Inetpub\AtoZ\hometown\include\weatherFeed.py -c " .  $city . " -s " .
$state;
                
                $data = exec($command . " 2>&1", $result);
                $content=ob_get_contents();
                ob_end_clean();
                
                echo 'Content: ' . $content . '<br>';
                echo 'Result: ' . $result . '<br>';
                echo 'Data: ' . $data . '<br>';
                echo 'Command: ' . $command . '<br>';
                include('include\weatherFeed_TEMP.txt')
        ?>
[/code]

and I've modified my python, making it a function
[code]
#!C:\Program Files\Python26\python.exe -u
# Current weather feed
# # Weather page sources: http://www.weather.gov/
# Capture relevant data, strip unusable stuff out, fix URLs, display in our
HTML page

# import program modules
from BeautifulSoup import BeautifulSoup as B_S
import re, urllib2, sys, mechanize # 'standard' set

### Return small weather table
def weatherSmall(c,s):
     cityState = c + ', ' + s
     query = 'Chicago, IL' #Test!!!
     _URL = "http://www.weather.gov/";

     br=mechanize.Browser()
     br.open( _URL )
     br.select_form( nr=1 ) #assuming form is 2nd form on page
     br['inputstring'] = query
     html = br.submit()

     _soup = B_S(html)

     # finding the correct table
     _step1 = _soup.findAll('table', limit=7)[6]
     col = _step1.findAll('td')
     # sys.argv is included below as a test.
     _thumb = '<table><tr><td colspan=2>Forecast for ' + query + '<br>' +
str(sys.argv) + '</td></tr><tr>' + str(col[0]) + str(col[1]) +
'</tr></table>'
     _thumb = _thumb.replace( '11%','50%' )
     _thumb = _thumb.replace( '/images/', 'images/weather/' )

     #write to txt file TEST
     _temp = 'D:\\Inetpub\\AtoZ\\hometown\\include\\weatherFeed_TEMP.txt'
     temp = open( _temp, 'w' )
     temp.write( _thumb )
     temp.close()

     return _thumb

city = 'Establish'
state = 'Variables'
count = 0
for ea in sys.argv:
     if ea == '-c':
         city = sys.argv[count+1]
     elif ea == '-s':
         state = sys.argv[count+1]
     count+=1
_result = str(weatherSmall(city,state))
#print _result
[/code]

Roy Hinkelman

I don't know anything about PHP, so take the following for what it's worth.

So where is mechanize.py ? The import error means that it can't be found. Yet if you run the program standalone it's finding it? My guess is that it depends on the current directory when you enter the script.

First thing to do is to split the import line, so that the import mechanize follows the others on its own line. Then you can put some debugging lines in between them, perhaps saving off the os.curdir and sys.path values. I suspect the difference between running under php and from command line is in one of those.

DaveA



_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to