如何避免在现有项目布局中使用 sys.append.path?
How to avoid using sys.append.path in existing project layout?
我继承了一个布局与此类似的现有项目:
.
├── src
│ ├── __init__.py
│ └── greetings.py
├── tests
│ └── test-greetings.py
另外两个文件是:
# greetings.py
def hello():
return 'hello'
# test-greetings.py
import pytest
import sys
sys.path.append('../src')
from greetings import hello
def test_hello():
assert hello() == 'hello'
这有效,即我可以从测试目录 运行 pytest test-greetings.py
但我想避免使用 sys.path.append('../src')
行。在不改变项目布局的情况下,还有另一种方法可以实现吗?
你是对的,test-greetings.py
应该假设它在可以找到 greetings
的环境中是 运行。如何实现这一点取决于安装软件包或 运行s pytest
。一个简单的解决方案是
PYTHONPATH=../src pytest test-greetings.py
或
PYTHONPATH=src pytest test/test-greetings.py
我继承了一个布局与此类似的现有项目:
.
├── src
│ ├── __init__.py
│ └── greetings.py
├── tests
│ └── test-greetings.py
另外两个文件是:
# greetings.py
def hello():
return 'hello'
# test-greetings.py
import pytest
import sys
sys.path.append('../src')
from greetings import hello
def test_hello():
assert hello() == 'hello'
这有效,即我可以从测试目录 运行 pytest test-greetings.py
但我想避免使用 sys.path.append('../src')
行。在不改变项目布局的情况下,还有另一种方法可以实现吗?
你是对的,test-greetings.py
应该假设它在可以找到 greetings
的环境中是 运行。如何实现这一点取决于安装软件包或 运行s pytest
。一个简单的解决方案是
PYTHONPATH=../src pytest test-greetings.py
或
PYTHONPATH=src pytest test/test-greetings.py