- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法为 pkg_resources 指定自定义目标目录来列出 pip 包?我希望能够通过已使用自定义目标的 pkg_resources.require()
等使用 --target
查找已安装在自定义目标目录中的软件包目录。
我不想使用:
setuptools.find_packages
因为它仅使用 sys.path
setuptools.PEP420PackageFinder.find
非常感谢您对此提供的任何帮助。
最佳答案
Python 3.8 引入 importlib.metadata
,用于查询取代 pkg_resources 的已安装软件包的模块。用法示例:
In [1]: from importlib import metadata
In [2]: dists = metadata.distributions(path=['my_target_dir'])
In [3]: list(f"{d.metadata['Name']}=={d.metadata['Version']}" for d in dists)
Out[22]:
['pip==20.0.2',
'ipython==7.13.0',
...
]
对于 Python 2.7 和 Python >=3.5,有一个名为 importlib-metadata
的向后移植。 :
$ pip install importlib-metadata
pkg_resources.find_distributions
函数(记录在 Getting or Creating Distributions 下)接受目标目录来搜索包。示例:
$ ls -l my_target_dir/
total 36
drwxr-xr-x 2 hoefling hoefling 4096 May 17 13:29 __pycache__
-rw-r--r-- 1 hoefling hoefling 126 May 17 13:29 easy_install.py
drwxr-xr-x 5 hoefling hoefling 4096 May 17 13:29 pip
drwxr-xr-x 2 hoefling hoefling 4096 May 17 13:29 pip-10.0.1.dist-info
drwxr-xr-x 5 hoefling hoefling 4096 May 17 13:29 pkg_resources
drwxr-xr-x 6 hoefling hoefling 4096 May 17 13:29 setuptools
drwxr-xr-x 2 hoefling hoefling 4096 May 17 13:29 setuptools-39.1.0.dist-info
drwxr-xr-x 5 hoefling hoefling 4096 May 17 13:29 wheel
drwxr-xr-x 2 hoefling hoefling 4096 May 17 13:29 wheel-0.31.1.dist-info
使用 pkg_resources.find_distributions
扫描 my_target_dir
会产生:
In [2]: list(pkg_resources.find_distributions('my_target_dir'))
Out[2]:
[wheel 0.31.1 (/data/gentoo64/tmp/so-50380624/my_target_dir),
setuptools 39.1.0 (/data/gentoo64/tmp/so-50380624/my_target_dir),
pip 10.0.1 (/data/gentoo64/tmp/so-50380624/my_target_dir)]
关于python - 查找pip包: pkg_resources specify custom target directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50380624/
我试图在同一个 python 脚本中使用同一个库的两个不同版本(使用 easy_install --multi-version 安装)。下面的代码说明了总体思路。 如果我独立调用每个版本,一切都很好。
我无法导入 pkg_resources。每当我尝试时它都会显示 Python 3.5.2 (default, Jun 28 2016, 08:46:01) [GCC 6.1.1 20160602] o
无法让“intel-nauta”运行,因为它抛出此错误:pkg_resources.DistributionNotFound:未找到“jsonschema”发行版,并且是应用程序所需的[19160]
Pip 看到一个版本为 1.4.0 的包,但随后提示说我需要它的 >=0.9.34 版本。不是 1.4.0 > 0.9.34 吗? root@36e7a0a55174:~/tldr-integrati
为什么 this simple program导致运行时出现 pkg_resources.DistributionNotFound 错误,我们该如何解决? #setup.py from setupto
我正在尝试使用 reviewcode python/django 的 git 存储库。安装时 easy_install ReviewBoard 我收到以下错误 Setup script exited
我正在尝试使用端口 80。所以当我使用命令“sudo paster serve development.ini --reload” 我收到这个错误 pkg_resources.VersionConfl
我正在尝试在 Google App Engine 上安装一个软件包。该软件包相当广泛地依赖于 pkg_resources,但无法在 App Engine 上运行 setup.py。 但是,源代码中没有
我想找到一个文件的分布。该文件应该发现它自己的分布。 我试过了,但是不行: import os import pkg_resources for dist in pkg_resources.find_
我正在处理 CSV 文件并具有以下工作代码: reader = csv.reader(open(filename, 'rU'), dialect='excel') header = reader.ne
我尝试使用 pip install tensorflow --upgrade 升级 tensorflow。在卸载旧版本的 setuptools 期间出现了一些错误: PermissionError:
在 $PYTHONPATH 或 sys.path 中获取包的包版本的推荐方法是什么? 我记得 pkg_resource 模块对此有一些功能,但我找不到任何相关信息。请不要向我指出使用 version.
我正在将 Django 应用程序部署到开发服务器并在运行 pip install -r requirements.txt 时遇到此错误: Traceback (most recent call las
我正在尝试安装一个新模 block ,但我发现 pip不起作用 - 它显示 pkg_resources.DistributionNotFound: The 'pip==1.5.6' distribut
我想在MacOS上使用Python3.7 我已经是Python 2.7版本了。 我在.bash_profile,alias python="/usr/local/bin/python3.7"和sour
如何纠正这个错误: Traceback (most recent call last): File "c:\Apps\pypi\bin\buildout-script.py", line 15,
我想安装这个 repo https://github.com/armooo/cloudprint在我的树莓派上。说明在这里 https://baxeico.wordpress.com/2014/06/
我正在尝试使用 Py2Exe 从 ReviewBoard 的 postreview.py 构建 Windows 可执行文件,因此我的用户无需安装 Python 即可发布评论请求。 我遇到了编译版本找不
我正在尝试使用 Pyinstaller 打包我的 Python 脚本。我的脚本导入了第三方模块 Exscript 和 Netaddr。当我尝试运行 Pyinstaller 生成的可执行文件时出现以下错
我正在尝试通过以下命令使用 cx_Freeze setup.py 文件构建 EXE: python setup.py bdist_msi 命令的输出以:结尾 Copying data from pac
我是一名优秀的程序员,十分优秀!