PYTHONPATH and module names

T

Tobiah

So today, I created a file called 'formatter.py',
and my program broke. It turned out that I was
also import 'gluon' from web2py, which in turn,
somewhere, imported the regular python formatter.py
with which I was not familiar.

So the question is: Does one simply always have
to be knowledgeable about existing python library
names, or is having '.' in the python path just
a bad idea? Is there a way, not having '.' in
the path to explicitly specify the current directory?
Something analogous to import ./foo ?

Thanks,

Tobiah
 
R

rusi

So today, I created a file called 'formatter.py',
and my program broke. It turned out that I was
also import 'gluon' from web2py, which in turn,
somewhere, imported the regular python formatter.py
with which I was not familiar.

So the question is: Does one simply always have
to be knowledgeable about existing python library
names, or is having '.' in the python path just
a bad idea? Is there a way, not having '.' in
the path to explicitly specify the current directory?
Something analogous to import ./foo ?

Are you familiar with absolute and relative imports:
http://docs.python.org/release/2.5/whatsnew/pep-328.html
 
S

SpaghettiToastBook .

Relative imports only work with the "from ... import ..." form.

— SpaghettiToastBook


Are you familiar with absolute and relative imports:
http://docs.python.org/release/2.5/whatsnew/pep-328.html


Doesn't seem to work:

Python 2.7.3 (default, May 10 2012, 13:31:18)
[GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.File "<stdin>", line 1
import .format
^
SyntaxError: invalid syntax
 
R

rusi

Are you familiar with absolute and relative imports:
http://docs.python.org/release/2.5/whatsnew/pep-328.html

Doesn't seem to work:
Python 2.7.3 (default, May 10 2012, 13:31:18)
[GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.File "<stdin>", line 1
import .format
^
SyntaxError: invalid syntax

1. My reading of
http://www.python.org/dev/peps/pep-0328/
is that this only works for from statements not import statements.
[See the section called Guido's decision]

2. The __future__ is not necessary in python 2.7
[Not necessary or not allowed I not know :) ]
 
S

Steven D'Aprano

Are you familiar with absolute and relative imports:
http://docs.python.org/release/2.5/whatsnew/pep-328.html

Doesn't seem to work:
Python 2.7.3 (default, May 10 2012, 13:31:18) [GCC 4.2.4 (Ubuntu
4.2.4-1ubuntu4)] on linux2 Type "help", "copyright", "credits" or
"license" for more information.
from __future__ import absolute_import import .format
File "<stdin>", line 1
import .format
^
SyntaxError: invalid syntax
1. My reading of
http://www.python.org/dev/peps/pep-0328/ is that this only works for
from statements not import statements. [See the section called Guido's
decision]


Correct. This would have to be written as:

from . import format


but note that this only work in a package, not from some arbitrary module
inside a directory.


2. The __future__ is not necessary in python 2.7 [Not necessary or not
allowed I not know :) ]

Not necessary.

__future__ statements are guaranteed to "work" in all future versions, in
the sense that once a __future__ feature is added, it will never be
removed. So Python has had "nested scopes" since version 2.2 (by memory),
but:

from __future__ import nested_scopes

still is allowed in Python 3.3, even though it has been a no-op since 2.2
or 2.3.
 

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

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top