问题标签 [python-wheel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2395 浏览

python - 点子、轮子和控制台脚本

我在使用 python whl 包时遇到了以下问题:

我有一个在 setup.py 中定义的单一入口点的包。当我运行时pip install .,它会正确安装包入口点包装器。当我运行python setup.py bdist_wheel后跟时pip install thing.whl,它只安装包,而不是入口点。

如何从创建的 wheel 包中正确安装入口点?

PS:当我解压wheel包时,我确实找到了带有预期条目的“entrypoints.txt”。它只是没有安装在环境箱中。

0 投票
1 回答
2439 浏览

python - 带有自定义入口点的 python pip install wheel

在 Windows 上的 python virtualenv 中,我安装了一个自定义包,它覆盖 setuptools.command.install.easy_install.get_script_args 以创建新的自定义类型的入口点“custom_entry”

我有另一个包,我想用 setuptools 准备暴露一个自定义入口点。

如果我准备这个包的 egg 发行版并使用我修改过的 easy_install.exe 安装它,这将正确创建自定义入口点。

但是,如果我准备一个 wheel 分发版并使用修改后的 pip.exe 安装它,则不会添加自定义入口点。

为什么 pip 不遵循与 easy_install 相同的安装过程?

阅读 pip 的源代码,似乎 wheel.py 中的函数get_entrypoints排除了除 console_scripts 和 gui_scripts 之外的所有入口点。这个对吗?

如果是这样,我应该如何为 pip 安装安装自定义入口点?

- - 编辑

看来我应该提供更多细节。

在我的第一个包中custom-installer,我正在覆盖(猴子补丁,真的)easy_install.get_script_args,在custom_install.__init__.py

在那个包中setup.py,我为我的自定义安装程序提供了一个 (console_script) 入口点:

使用 pip 正确安装此软件包会创建安装程序脚本/venv/Scripts/custom_install.exe

对于我的第二个包,customized我有常规和自定义入口点来安装setup.py,两个模块customconsole.

无论安装过程如何,我都希望看到这两个入口点都已安装。

如果我将包构建customized为 egg 发行版并使用custom_install.execreated by安装它custom-installer,那么 的两个入口点customized都已安装。

我希望能够使用 pip 将此包安装为轮文件,但从阅读源代码来看,pip 似乎明确跳过了“console_scripts”和“gui_scripts”以外的任何入口点:

随后,pip 使用与 easy_install 完全不同的代码集生成入口点脚本。据推测,我可以覆盖 pip 的这些实现,就像使用 easy_install 所做的那样,以创建我的自定义入口点,但我觉得我走错了路。

谁能建议一种更简单的方法来实现与 pip 兼容的自定义入口点?如果没有,我可以覆盖get_entrypointsand move_wheel_files

0 投票
1 回答
3390 浏览

python - 如何在没有互联网连接的机器上安装“点子轮”?

我们有一台没有互联网连接的 prod 服务器机器,我希望能够执行“pip wheel”。

我已经下载virtualenv-1.9.tar.gz复制到产品服务器并提取它。首先,为什么不能立即使用点子轮?

我已经开始下载和复制wheel-0.24.0.tar.gz,但只是安装wheel,而不是pip wheel

编辑:我也试过pip install wheel无济于事

当然upgrade不能工作(没有互联网连接......)

(v1)[ihadanny@lvshdc2en0012 ~]$ pip install --upgrade wheel 无法获取索引基础 URL https://pypi.python.org/simple/

我错过了什么?

0 投票
1 回答
447 浏览

python - 将python包上传到pypi时如何生成md5签名?

我正在尝试为我在 pypi 上上传的新版本生成并添加 md5 哈希,但我无法找到如何执行此操作。

到目前为止,我发现的唯一参考是这个https://pip.pypa.io/en/latest/reference/pip_install.html但它不包含任何信息。

例如,我能够轻松添加 PGP 签名,但对于 md5,似乎没有文档。

我当前的发布命令如下所示:

0 投票
1 回答
2303 浏览

python - python setuptools将轮子上传到自定义devpi服务器:404 Not found

作为持续集成管道的一部分,我正在尝试从存储库构建 Python 轮文件,将其上传到自定义 devpi 服务器,并从那里对轮文件运行测试。

我尝试过的一种方法是使用 setuptools 在一行中构建和上传 wheel 文件,但这会返回 404 Not Found 消息。

在 Windows 上工作,我的 .pypirc 位于 C:\Users\buildbot\.pypirc

从我的项目回购的根目录,我尝试构建和上传:

但是,虽然轮子放置dist\proj-20141216.2.dev0-py2-none-any.whl得很好,但上传步骤会导致:

运行上传提交 C:\var\buildminion\build_proj-dev\build\dist\proj-20141216.2.dev0-py2-none-any.whl 到http://pypi/root/staging

上传失败(404):未找到

运行 setuptoolsregister会产生类似的结果:

将蜗牛注册到http://pypi/root/staging

服务器响应 (404):未找到

我知道 devpi 服务器运行正常,因为我可以手动上传文件

任何想法为什么 setuptoolsupload不起作用?

此外,是否有在没有 .pypirc 的情况下使用此上传功能(或自动填充该文件)?将来,我希望能够自动配置 buildbot minions,如果可以的话,这是我会避免的额外配置。

如果无法完成这项工作,我可以使用 devpi 编写手动上传脚本。我希望相同的 CI 代码适用于多个项目的多个版本,因此如果我不必编写代码来匹配轮子文件名会更容易。这就是我更喜欢使用 setuptools 的原因uploadpip有上传功能吗?

0 投票
18 回答
1923302 浏览

python - 如何安装带有 .whl 文件的 Python 包?

我在我的 Windows 机器上安装 Python 包时遇到问题,我想用 Christoph Gohlke 的 Window 二进制文件安装它。(根据我的经验,这减轻了许多其他软件包安装的麻烦)。但是,只有 .whl 文件可用。

http://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype

但是如何安装 .whl 文件?

笔记

0 投票
1 回答
71 浏览

python - 如果您使用 Wheel 格式发布 Python,您还需要将它们发布为 egg 吗?

假设您支持 Python 2.6 或更高版本,发布 .egg 包是否有意义,或者发布 .whl 包是否足够?

就我而言,这些包是纯 python。

0 投票
0 回答
81 浏览

python - 轮文件和无尽的搜索循环

我无法安装 .whl 文件,因为我需要 pip 来安装它。要安装 pip,我需要运行一个 .whl 文件。我现在不知道如何安装 pip,因为我用来查找所有库的站点(http://www.lfd.uci.edu/~gohlke/pythonlibs/)摆脱了 exe。我在问他们是否是获得点子的另一种方式,因为我搜索并找不到任何东西。当我尝试引导 get-pip.py 时,我得到:

找不到任何满足 pip 要求的下载。根本找不到 pip 的分布

0 投票
3 回答
233745 浏览

python - 轮文件安装

如何安装 .whl 文件?

我有轮子库,但我不知道如何使用它来安装这些文件。我有 .whl 文件,但我不知道如何运行它。

0 投票
0 回答
854 浏览

python - Python、setuptools、wheel、entry_points、适用于 Windows 的 .exe 包装器和多处理

TL;博士; - setuptools/distutils 脚本包装器 .exe entry_points 不会触发 Windows 多处理无限递归。Wheel 的包装器 .exe entry_points 可以。我怎样才能得到以前的行为?

我们中的许多人可能在直接调用模块脚本时遇到了 Python 2.X 的多处理模块和具有无限递归的 Windows 的问题。

当我为我的库创建一个入口点,该入口点导致一个具有多处理功能的函数时,入口点脚本及其包装 .exe 文件在我使用 setuptools 安装它们时都可以在 Windows 上运行,能够直接运行调用 multiprocessing.Pool 的函数和进程对象。这很棒,因为我的库依赖于多处理来加速可耻的并行程序。

事情一直运作良好,直到我尝试使用 bdist_wheel 共享库。虽然构建过程之前在外部添加了 .exe 包装器和脚本,但 .exe 不是同一种包装器。

我的二进制文件格式技术远非好,但我知道有某种 zip 压缩文件到我看到的可执行文件的翻译,所以我去做了唯一合乎逻辑的事情并解压缩了 .exe 文件。我使用了 7zip,因为即使是我的 mingw bash shell 也没有 zip/unzip。从 Wheel 文件安装的 .exe 包装器解压缩到包含简单.py 脚本的目录中,

它只是一个从 zip 文件运行的 python 脚本。难怪它炸了。

我使用 setup.py 重新安装,添加了旧的包装器 .exe,并尝试解压缩。瞧,它是一个完整的便携式可执行文件,其中 .data、.pdata、.rdata 和 .text 部分通过 7zip 提取到自己的文件中。两个小时后,我翻遍了 distutils 和 setuptools 源代码以找出那里发生了什么,并发现我看到的 .exe 是通过将一些特定于入口点的 python 代码倒入预先制作的启动器 exe 中制作的对于 Windows。伟大的。我比以前知道的更多。但如果区别在于 .exe 包装器,为什么 -script.py entry_point 有效?

load_entry_point特别吗?它是 EntryPoint.load() 的包装器,用于显式调用__import__

从的globals()文档中看起来像是死胡同__import__,但['__name__']看起来它可能很有用。问题是这__import__是一个内置的,它是用 C 实现的。我试图阅读发布在GitHub 上的镜像,但目前它超出了我的理解范围,分为三个或更多交互功能,我可以'不跟踪并保持与 fromlist 的连接。__import__我也可能会因为下一个块尝试访问存储在 中的模块的属性而分心entry,我推断它是入口点函数本身。

当我运行以下代码时:

我确实看到了我希望运行的主要功能,并且没有问题地返回。

真的__import__在做我需要的工作,__name__将脚本设置为不包括的内容__main__吗?为什么runpy,-m背后的机器不工作?