【发布时间】:2019-09-25 15:54:44
【问题描述】:
您可以使用获取 python 发行版的版本
import pkg_resources
pkg_resources.get_distribution("distro").version
如果您知道分发名称,那就太好了,但是我需要在运行时动态找出我的分发名称。
# Common framework base app class, extended by each app
class App(object):
def get_app_version(self) -> str:
package_name = self.__class__.__module__.split('.')[0]
try:
return pkg_resources.get_distribution(package_name).version
except Exception:
return "development"
这适用于应用程序包名称与分发名称相同的情况(例如requests)。但是,一旦它们不匹配,就会失败(例如,my-app 包含包 my_app)。
所以我需要的是发行版和它们的包之间的映射,我确信它一定存在于某个地方,因为 pip 似乎知道当你调用卸载时要删除什么:
$ pip uninstall requests
Uninstalling requests-2.21.0:
Would remove:
/home/user/.virtualenvs/app/lib/python3.6/site-packages/requests-2.21.0.dist-info/*
/home/user/.virtualenvs/app/lib/python3.6/site-packages/requests/*
如何以编程方式访问此映射?
【问题讨论】:
标签: python python-3.x python-packaging