importing a package

F

flupke

Hi,

I developed a package with a structure like this
src/
tesfile.py
dir1/
__init__.py
file1.py
dir2/
__init__.py
file2.py

The testfile is meant to try the code out that is specified in file1.py
and file2.py

Now i have another project where i want to use the code from that package.
The structure of that project:

src/
file3.py
dir3/
__init__.py
file4.py

To use it, i copied the package in the root of the project:
src/
file3.py
dir3/
__init__.py
file4.py
package/
__init__.py
dir1/
__init__.py
file1.py
dir2/
__init__.py
file2.py

In my code (file3.py) i then do an "import package.dir1.file1 as myobj"
and access a class like this:
myobj.LMyClass()

(where myobj and LMyClass are decent names. Used these as example)

That works but i get an error in the package files.
I then get an error in package/dir1/file1.py on an import statement
specified in that file1.py that says import dir2.file2

How come this works as standalone project and not when i try to use it
as in situation 2 it doesn't seem to find module file2.py ?
How can i solve that?

Thanks
Benedict
 
D

Damjan

I developed a package with a structure like this
src/
tesfile.py
dir1/
__init__.py
file1.py
dir2/
__init__.py
file2.py

Importing dir2/file2 from dir1/file1.py works here, because when yuo started
the testfile script the src/ directory was added to the sys.path list.

If you relocate dir1/ and dir2/ in a "package" directory here it will not
work.
 
F

flupke

Damjan said:
Importing dir2/file2 from dir1/file1.py works here, because when yuo started
the testfile script the src/ directory was added to the sys.path list.

If you relocate dir1/ and dir2/ in a "package" directory here it will not
work.

Indeed, when i do this, then it works
import sys
sys.path.append('package')

However, why is it that package isn't added automatically to the pad?

Regards,
Benedict
 
D

Damjan

Indeed, when i do this, then it works
import sys
sys.path.append('package')

However, why is it that package isn't added automatically to the pad?

When you execute a python program the directory where the program is is
automatically added to sys.path. No other directory is added to the default
builtin sys.path.

In you case (the second case), you can import package.dir2.file2.
 
B

Benedict Verheyen

Damjan said:
When you execute a python program the directory where the program is is
automatically added to sys.path. No other directory is added to the default
builtin sys.path.

In you case (the second case), you can import package.dir2.file2.

OK, thanks for the info

Regards,
Benedict
 

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,768
Messages
2,569,574
Members
45,051
Latest member
CarleyMcCr

Latest Threads

Top