Steven D'Aprano wrote:
On Tue, 02 Jun 2009 01:46:23 +0200, Stef Mientki wrote:
MRAB wrote:
Stef Mientki wrote:
hello,
I've pictures stored in a path relative to my python source code. To
get a picture, I need to know what path I'm on in each python module.
I thought __file__ would do the job,
but apparently I didn't read the documentation carefully enough,
because file is the path to the module that called my module.
Any ways to get the path of "myself" ?
I'm not sure what you mean. I just did a quick test.
# File: C:\Quick test\child.py
print "name is %s" % __name__
print "file is %s" % __file__
# File: C:\Quick test\parent.py
import child
print "name is %s" % __name__
print "file is %s" % __file__
# Output:
name is child
file is C:\Quick test\child.py
name is __main__
file is C:\Quick test\parent.py
Yes, that's what I (and many others) thought, but now put your code in a
file, let's say the file "test.py", and now run this file by :
execfile ( 'test.py' )
In that case, test.py is not a module. It's just a file that by accident
has a .py extension, which is read into memory and executed.
If you bypass the module mechanism, don't be surprised that you've
bypassed the module mechanism :)
What are you trying to do? Using execfile is probably not the right
solution.
Maybe you're right, and it's not the best solution for my problem.
I've written a program, that contains many files, both python files and
data files,
and I would like to distribute the program.
For Linux, I'll just bundle the files in a zip-file,
but for windows I want to make a one button installer,
and the files generated by Py2Exe, don't work at all.
Through this discussion, I discovered another problem,
because __file__ isn't the current file,
I can't run 1 module(file) from another module (file) .
The structure of my files is something like this:
Base_Path
Main_Program_Path
Main_Program_1.py
Main_Program_2.py
Brick_Path
Brick_1.py
Brick_2.py
Support_Libraries
Support_Library_1.py
Support_Library_2.py
Sounds_Path
Sound_1.wav
Sound_2.wav
Picture_Path
Picture_1.png
Picture_2.bmp
The Main_Programs, should be able to "run/launch" other Main_Programs
and Support_Libraries,
in several ways (wait / nowait, fetch output or not, ... ).
So each Support_Libraries will have a "main-section".
Everything is highly dynamical, just dumping a new py-file in the
Brick_Path, will make the py-files available ( i.e. directly visible and
usable to the user) in all Main_Programs.
Moving the complete file-structure to Linux or Windows works good.
Distributing the files through Py2Exe doesn't work at all.
So I was thinking of a hack:
- make dummy programs, that will start Main_Program_x.py through a
execfile function
- Create executables with Py2Exe of the dummy programs
- add manually the whole directory structure to the files generated by
Py2Exe
- automate the above process by Inno setup
Any suggestions ?
thanks,
Stef
--
http://mail.python.org/mailman/listinfo/python-list