"Frank Millman" <[EMAIL PROTECTED]> writes: > While developing under linux, I use my own computer, as the only user, > so it has become my habit to login as root and do all my work as a > superuser. I know that this is not desirable, but it has become a > habit, which I am now trying to get out of.
Ack. Phht. Well, at least you're trying to get out of the habit. Your problems are generally caused by doing things as the wrong user. You need to figure out which things you have to do as root, and then do those (and only those) as root, and do the rest as you. > 1. The application I am developing will eventually be deployed as a > multi-user accounting/business system. I want to identify the physical > workstation that generates each transaction, so I am using the mac > address. My method for extracting this is as follows - > mac = os.popen("ifconfig|grep Ether|awk {print '$5'}").read()[:-1] # > I did not come up with this myself, I cribbed it from somewhere > > As root, this works fine. As non-root, ifconfig is not found. The > reason is that it is in /sbin, and this is not included in the default > path for non-root users. I could either include /sbin in my path, or I > could change the above line to /sbin/ifconfig ... Alternatively, there > may be a better way of getting the mac address or identifying the > workstation. Put "/sbin/ifconfig" in a string variable. Place that somewhere where a person porting the program will find it. Then use the variable name in the os.popen call. Of course, if ifconfig is in /sbin, it's likely that their ifconfig won't work that way anyway. Mine certainly doesn't. BTW, I'd consider doing the grep/awk part of the process via python. Python won't be as fast as the grep/awk, but ifconfig's output is short, so the cost of launching the new processes probably swamps that. Something like: for line in os.popen(IFCONFIG): if line.find('Ether'): mac = line.split()[4] break should do it. On the other hand, if its fast enough and works, don't touch it. > 2. I am using wxPython, which was compiled from source. It so happens > that I did this with a colleague who also has a user account on my > machine, so the compile and install of wxPython was done from his home > directory. Python modules should be installed as root. That should put them in the correct place. > When I start my app as non-root, the import of wx fails, as it cannot > find certain files. They are in the other user's home directory, but as > the top-level directory has permissions of drwx------, my user cannot > read anything in that directory. I can change the directory > permissions, or I can move the files to another area which all users > can read. If the latter, is there a 'correct' place to put them? Yes. In the python libraries site-packages directory. You really want to check out your platforms package management system. It's *much* easier to type "sudo port install wx-python" than it is to download, configure, compile, and install the package. The exact command will depend on your distro. It's probably one of rpm or apt-get, but might be emerge, or maybe even port. <mike -- Mike Meyer <[EMAIL PROTECTED]> http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list