我想跑:
python somescript.py somecommand
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,我需要PYTHONPATH包含一个特定的目录.我不能只将它添加到我的环境变量中,因为我想要添加的目录会根据我正在运行的项目而更改.有没有办法PYTHONPATH在运行脚本时改变?注意:我甚至没有PYTHONPATH变量,因此在运行此脚本期间,我不需要担心附加到它而是覆盖它.
pytest建议包含一个额外的目录来分隔项目中的源代码:
my_package
??? src # <-- no __init__.py on this layer
? ??? my_package
? ??? __init__.py
? ??? util_module
? ??? __init__.py
? ??? utils.py
??? tests
??? __init__.py
??? test_util_module
??? __init__.py
??? test_utils.py
Run Code Online (Sandbox Code Playgroud)
可悲的是,他们没有说1关于测试代码中的导入应该如何在这种情况下工作,这对于我的IDE在这个天真的例子2中工作得很好,但是导致pytest出现以下错误:
my_package $ pytest
====================== test session starts ======================
platform linux -- Python 3.6.4, pytest-3.5.1, py-1.5.3, pluggy-0.6.0
rootdir: /home/user/workspace/my_package, inifile:
collected 0 items / 1 errors
============================ ERRORS =============================
___ ERROR collecting tests/test_util_module/test_utils.py ___
ImportError while importing test …Run Code Online (Sandbox Code Playgroud)