I'm fairly comfortable writing Python code, but I only have experience writing scripts with perhaps a few supporting modules. Now I want to start writing a package, and I'm feeling a bit helpless: I'm not sure how to organize my work.

In my way of thinking, I would have a working tree for the package (or even more than one), and also an installed version (once version 0.1 or so is ready).

For example, let's say I'm working on luaparser (https://github.com/boolangery/py-lua-parser). There are tests in directory luaparser/tests, and I want to execute those tests. So I execute, for example:

$ python3 -m unittest test_ast.py

But that doesn't work:

E
======================================================================
ERROR: test_ast (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: test_ast
Traceback (most recent call last):
File "/usr/lib/python3.5/unittest/loader.py", line 153, in loadTestsFromName
    module = __import__(module_name)
File "/home/roel/temp/py-lua-parser/luaparser/tests/test_ast.py", line 1, in <module>
    from luaparser.utils  import tests
ImportError: No module named 'luaparser'


The test tries to import the global luaparser package (beause they use absoluate imports, which is the recommended way if I understand correctly), but that's not what I want: I want to test the local version in my working tree.

I guess I could use something like

$ PYTHONPATH=../.. python3 -m unittest test_ast.py

but it feels like there should be a better way than manually specifying the module search path.

How do people usually do this? Is there maybe a guide that explains the practical side of writing packages?

--
The saddest aspect of life right now is that science gathers knowledge
faster than society gathers wisdom.
  -- Isaac Asimov

Roel Schroeven

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to