Reputation: 1351
my python folder structure is as follows
repository
-libraries
-image
-imagefuncs.py
-videos
-videofuncs.py
-text
-textfuncs.py
-docs
-tests
-test_imagefuncs.py
For the life of me i cannot figure out how I am supposed to test my functions defined in imagefuncs.py
in test_imagefuncs.py
I cannot import the libraries folder in test_imagefuncs.py so none of those functions are visible to my testing code.
I'm using python3 and all i want to achieve is do py.test from my root repository folder and have all my tests execute without throwing import errors.
Is modifying the python path the only way to go about achieving this?
I want to achieve this without modifying the system path or python path
Upvotes: 4
Views: 3235
Reputation: 2778
Is modifying the python path the only way to go about achieving this?
Yes. One way or other, only paths in sys.path
will be used.
modify PYTHONPATH
is one way to just append paths to sys.path
, any other way will do the same thing as adding paths to sys.path
. The specific variation really depends on project.
e.g.
export PYTHONPATH='/opt/mybuild'
[tmp]$ python3.6 -m site
sys.path = [
'/tmp',
'/opt/mybuild',
'/usr/lib64/python36.zip',
'/usr/lib64/python3.6',
'/usr/lib64/python3.6/lib-dynload',
'/home/joe/.local/lib/python3.6/site-packages',
'/usr/lib64/python3.6/site-packages',
'/usr/lib/python3.6/site-packages',
]
USER_BASE: '/home/joe/.local' (exists)
USER_SITE: '/home/joe/.local/lib/python3.6/site-packages' (exists)
ENABLE_USER_SITE: True
Upvotes: 1