如何使用系统安装包?
How to use system installed packages?
我正在尝试编写脚本,应该使用 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/" }
]
但是没用。 path 目录中的代码不被 Poetry 视为 python 包。
[ValueError]
Directory /usr/lib64/python3.6/site-packages/portage does not seem to be a Python package
有没有办法做到这一点并使用系统作为 运行 测试的虚拟环境(我知道 运行 在主机系统中测试不是一个好主意,但是有一个docker 安装了 Portage 的图像?
在我看来,这可能与不允许访问 系统站点包 的虚拟环境有关。如果确实如此,请注意,截至目前,poetry 尚不可行。不过有一个open issue, as well as a pull request。
解决方法可能是先创建没有 poetry 的虚拟环境,例如:
path/to/python3 -m venv --system-site-packages .venv
然后在此虚拟环境中使用 poetry,因为 poetry 应该不会在检测到虚拟环境时创建虚拟环境它是一个中的 运行,将使用它来代替。
显然 portage 不是 pip-installable Python 项目,因此指定 markers
和 path
。另外 site-packages
目录通常包含已安装的项目,而 path
应该指向 poetry (pip)可以下载该项目的可安装发行版。
我相信一旦 --system-site-packages
的问题得到解决,那么 portage 可以被列为一个简单的依赖项 portage = "*"
.
我正在尝试编写脚本,应该使用 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/" }
]
但是没用。 path 目录中的代码不被 Poetry 视为 python 包。
[ValueError]
Directory /usr/lib64/python3.6/site-packages/portage does not seem to be a Python package
有没有办法做到这一点并使用系统作为 运行 测试的虚拟环境(我知道 运行 在主机系统中测试不是一个好主意,但是有一个docker 安装了 Portage 的图像?
在我看来,这可能与不允许访问 系统站点包 的虚拟环境有关。如果确实如此,请注意,截至目前,poetry 尚不可行。不过有一个open issue, as well as a pull request。
解决方法可能是先创建没有 poetry 的虚拟环境,例如:
path/to/python3 -m venv --system-site-packages .venv
然后在此虚拟环境中使用 poetry,因为 poetry 应该不会在检测到虚拟环境时创建虚拟环境它是一个中的 运行,将使用它来代替。
显然 portage 不是 pip-installable Python 项目,因此指定 markers
和 path
。另外 site-packages
目录通常包含已安装的项目,而 path
应该指向 poetry (pip)可以下载该项目的可安装发行版。
我相信一旦 --system-site-packages
的问题得到解决,那么 portage 可以被列为一个简单的依赖项 portage = "*"
.