On 10/11/2010 07:27 AM, Nick Coghlan wrote:
On Mon, Oct 11, 2010 at 1:54 AM, anatoly techtonik<techto...@gmail.com> wrote:
On Sun, Sep 26, 2010 at 2:32 PM, Nick Coghlan<ncogh...@gmail.com> wrote:
This is almost certainly failing because the directory containing the
spyderlib package isn't on sys.path anywhere (instead, whichever
directory contains the script you executed directly will be in there,
which will be somewhere inside the package instead of outside it). Put
the appropriate directory in PYTHONPATH and these tests should start
working.
This is a hack. I use relative imports, because I don't want to care
about PYTHONPATH issues. I work with two clones of spyderlib
(reference point and feature branch). You propose to switch PYTHONPATH
every time I want to execute debug code in the __main__ section from
either of them.
Anatoly, unconstructive responses like this are why people often react
negatively to your attempts to be "helpful".
I specifically mentioned 2 things you could do:
- modify PYTHONPATH
- use -m to execute your modules and just switch your current working
directory depending on which version of spyderlib you want to execute
I don't recall Anatoly saying which p3k version and revision he was using.
Relative imports was broken for while in 3.2. It's fixed now and I
presume he is using a fairly current revision of 3.2.
When you do a "make install" for 3.2 on Ubuntu, the current directory path
"", isn't perpended to sys.path. I don't know if that is an over site or
not, but it could be a factor.
A few more suggestions ...
Make A test runner script which modifies sys.path. It also could be
considered a hack, but it doesn't require modifying PYTHONPATH, so it
wouldn't have any potential to have side effects on other modules/programs.
One of my personal choices when writing large applications (rather than
scripts), is to make a local "lib" directory and prepend that to sys.path
in the main application file before any local imports.
# Add a local lib to the search path.
lib = os.path.abspath(os.path.join(__file__, '..', 'lib'))
sys.path.insert(0, lib)
[Appliction dir not in PYthon path]
main_app_file.py
test.py
[lib]
[test package]
... #test modules
... #other local modules and packages
I then add a -test option to the main_app_file.py or a create test.py file
at the same level as the main_app_file. The test runner also needs to add
lib to sys.path, but after that it can import and find any/all tests you
want to run. The test modules can use relative imports as long as they
aren't circular.
* The error message in the case of circular imports could be much better!
Cheers,
Ron
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com