python - 如何使用系统安装包?
问题描述
我正在尝试编写脚本,它应该使用 Portage API。但是 Portage python 包在 PyPi 中不可用,但即使它可用也没有任何意义,因为它应该从一些带有包数据库和配置的配置系统中使用。
我试图编写以下丑陋的代码:
[tool.poetry.dependencies]
python = "^3.6"
click = "^7.0-r1"
portage = [
{ markers = "python_version ~= '3.6' and sys_platform == 'linux'", path = "/usr/lib64/python3.6/site-packages/portage/" },
{ markers = "python_version ~= '3.7' and sys_platform == 'linux'", path = "/usr/lib64/python3.7/site-packages/portage/" },
{ markers = "python_version ~= '3.8' and sys_platform == 'linux'", path = "/usr/lib64/python3.8/site-packages/portage/" },
{ markers = "python_version ~= '3.9' and sys_platform == 'linux'", path = "/usr/lib64/python3.9/site-packages/portage/" }
]
但它不起作用。Poetry 不将路径目录中的代码视为 python 包。
[ValueError]
Directory /usr/lib64/python3.6/site-packages/portage does not seem to be a Python package
有没有办法做到这一点并将系统用作运行测试的虚拟环境(我知道在主机系统中运行测试不是一个好主意,但是有一个安装了 Portage 的 docker 映像)?
解决方案
在我看来,这可能与不允许访问系统站点包的虚拟环境有关。如果确实如此,那么请注意,这在今天的诗歌中是不可行的。有一个未解决的问题,以及一个拉取请求。
一种解决方法可能是先创建没有诗歌的虚拟环境,例如:
path/to/python3 -m venv --system-site-packages .venv
然后在这个虚拟环境中使用诗歌,因为当诗歌可以检测到它在一个虚拟环境中运行并使用它时,它不应该创建一个虚拟环境。
显然portage不是pip 可安装的markers
Python 项目,因此指定and很可能是无用的path
。此外site-packages
,目录通常包含已安装的项目,而path
应该指向一个位置,诗歌( pip ) 可以从该位置下载项目的可安装发行版。
我相信一旦--system-site-packages
解决了这个问题, portage就可以被列为一个简单的依赖项portage = "*"
。
推荐阅读
- sql - 为什么我的 SQL 查询会无限期执行?
- numpy - 有什么方法可以在 matplotlib 中获取单位向量?
- r - 如何使用 R 读取多个 XML 文件并忽略编码错误
- fedex - FedEx 在法国境内费率服务问题(Laravel)
- android - 通过蓝牙将 Zebra TC26 ZPL Android Studio 发送到 ZD420
- ms-access - 微软访问。仅显示高于最高单个值的值?
- data-visualization - 有什么方法可以快速查看日期吗?
- functional-programming - 如何解决此“两个列表的差异”功能?
- java - 使用 Java8 将列表转换为映射,以空列表作为值
- git - 如何在 jenkins 管道代码中输入 git 凭据