Python-在setup.py安装之前和之后导入包模块



假设一个Python包(例如,MyPackage(由几个模块(例如MyModule1.pyMyModule2.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似乎提供了额外的方法。

在pycharm IDE中,您可以通过将工作目录设置为包含所有文件的文件夹来轻松导入方法
然后在MyPackage__init__.py文件中导入MyModule1.pyMyModule2.py的所有函数
然后在MyPackage_test.py中,您可以使用

import MyPackage 
from MyPackage import xyz

最新更新