检查自定义(非PyPI)包是否已安装的方法
我们有一些内部的Python包,它们的名字和PyPI上的包是一样的,比如说有package1
、package2
和package3
。有时候,一些用户会不小心安装了PyPI上的版本,所以我在想有没有什么标准的方法来确认他们安装的是正确的包。
我现在的想法是在我们的package0
中,这个包的名字和PyPI不冲突,但它会导入package1
、package2
和package3
,可以做一些类似这样的事情:
# package0.__init__.py
import package1
import package2
import package2
for pkg in [package1, package2, package3]:
try:
assert "our-organization" in pkg.__url__
except (AttributeError, AssertionError) as exc:
raise ImportError(
f"An incorrect version of {module.__name__} was detected. "
"Please ensure you have installed correct internal version and not "
f"a package on PyPI with the same name. ({exc})"
)
当然,这个方法只有在他们加载package0
的时候才有效,如果他们直接在比如说jupyter notebook中加载package1
,那就不行了。
1 个回答
-1
我建议你使用 importlib.metadata
来查看已安装包的元数据。你可以在这些元数据中查找一些特定的值,比如你在问题中提到的某个网址,或者一个 分类标签(那些以 Private ::
开头的标签可能是不错的选择,因为这样的分类标签在 PyPI 上是不会出现的),或者多个元数据值的组合。