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

Mic*_*udl 6 python package python-import pypi python-2.7

假设一个Python包(例如MyPackage),它由几个模块(例如,MyModule1.pyMyModule2.py)和一组单元测试(例如,in MyPackage_test.py)组成.

.
??? MyPackage
?   ??? __init__.py
?   ??? MyModule1.py
?   ??? MyModule2.py
??? README.md
??? requirements.txt
??? setup.py
??? tests
    ??? MyPackage_test.py
Run Code Online (Sandbox Code Playgroud)

我想导入的功能MyModule1.py的单元测试中MyPackage_test.py.具体来说,我想在安装之前和之后导入函数setup.py install MyPackage.

目前,我使用两个单独的命令,具体取决于软件包安装之前或之后的状态:

# BEFORE
import sys, os
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'MyPackage'))

# AFTER
import MyPackage
Run Code Online (Sandbox Code Playgroud)

这可以用一个命令完成吗?

Mic*_*udl 2

选项1

看来以下命令可以满足我的需要:

sys.path.append(os.path.join(__file__.split(__info__)[0] + __info__), __info__)
Run Code Online (Sandbox Code Playgroud)

选项 2

根据 的位置__init__.py,这也有效:

sys.path.append(os.path.dirname(os.path.split(inspect.getfile(MyPackage))[0]))
Run Code Online (Sandbox Code Playgroud)

选项 3

此外,ResourceManager API似乎还提供了额外的方法。