gpt4 book ai didi

pip - 防止 pip 缓存包

转载 作者:行者123 更新时间:2023-12-01 07:09:31 30 4
gpt4 key购买 nike

有没有办法告诉 pip 永远不要为我的包创建轮缓存?

背景

我编写了一个供内部使用的包,当使用 setup.py 中的 cmdclass 安装时,它会设置一些符号链接(symbolic link)。如果我安装 sdist,这些安装后和开发后触发器运行良好,但如果我将包编译成轮子,它们就不会运行。为了解决这个问题,我确保只将 sdist 上传到我们的内部 PyPI。

问题

According to the documentation ,当 pip 从 sdist 安装时,它会将其编译为 Wheel 并缓存以供下次使用。这意味着该软件包第一次安装正确,但后续安装失败。

我知道我可以使用 --no-cache-dir 运行 pip,但我想确保我团队中的每个人都可以正确获取包,而无需添加这样的标志。在任何情况下都不会有人想要这个套件的轮子。

问题

我可以在包中设置一个设置或配置变量来告诉 pip 永远不要将其缓存为轮子吗?

最佳答案

据我所知,没有干净的方法可以做到这一 pip 。你可以捕获机会,玩弄脏东西。

受到此启发comment ,您可以尝试使用如下所示的 setup.py 脚本(仅部分测试):

#!/usr/bin/env python3

import setuptools

setuptools.setup(
name='LookMaNoWheels',
version='1.2.3',
cmdclass={'bdist_wheel': None},
)

这个想法是在尝试 build 轮子时强制失败。发生这种情况时,诸如pip之类的工具往往会通过直接从任何可用的发行版(在您的情况下是sdist)安装来恢复。

<小时/>

更新

类似这样的内容将有助于提供更具信息性的错误消息:

#!/usr/bin/env python3

import distutils.errors
import setuptools

bdist_wheel = None

try:
import wheel.bdist_wheel
class bdist_wheel(wheel.bdist_wheel.bdist_wheel):
def run(self, *args, **kwargs):
raise distutils.errors.DistutilsClassError("No!")
except ModuleNotFoundError:
pass

setuptools.setup(
name='LookMaNoWheels',
version='1.2.3',
cmdclass={'bdist_wheel': bdist_wheel},
)

关于pip - 防止 pip 缓存包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58289062/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com