假设一个 Python 包(例如,MyPackage
)由多个模块(例如,MyModule1.py
和 MyModule2.py
)组成,并且一组单元测试(例如,在 MyPackage_test.py
中)。
.
├── MyPackage
│ ├── __init__.py
│ ├── MyModule1.py
│ └── MyModule2.py
├── README.md
├── requirements.txt
├── setup.py
└── tests
└── MyPackage_test.py
我想在 MyPackage_test.py
的单元测试中导入 MyModule1.py
的函数。具体来说,我想通过 setup.py install MyPackage
在包安装之前和之后导入函数。
目前,我使用两个单独的命令,具体取决于安装包之前或之后的状态:
# BEFORE
import sys, os
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'MyPackage'))
# AFTER
import MyPackage
这可以用一个命令完成吗?
最佳答案
选项 1:
看来下面的命令可以满足我的需要:
sys.path.append(os.path.join(__file__.split(__info__)[0] + __info__), __info__)
选项 2:
根据 __init__.py
的位置,这也有效:
sys.path.append(os.path.dirname(os.path.split(inspect.getfile(MyPackage))[0]))
选项 3:
此外,ResourceManager API似乎提供了额外的方法。
关于Python - 在 setup.py 安装之前和之后导入包模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53648900/