问题标签 [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.
python - 点子、轮子和控制台脚本
我在使用 python whl 包时遇到了以下问题:
我有一个在 setup.py 中定义的单一入口点的包。当我运行时pip install .
,它会正确安装包和入口点包装器。当我运行python setup.py bdist_wheel
后跟时pip install thing.whl
,它只安装包,而不是入口点。
如何从创建的 wheel 包中正确安装入口点?
PS:当我解压wheel包时,我确实找到了带有预期条目的“entrypoints.txt”。它只是没有安装在环境箱中。
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
,两个模块custom
和console
.
无论安装过程如何,我都希望看到这两个入口点都已安装。
如果我将包构建customized
为 egg 发行版并使用custom_install.exe
created by安装它custom-installer
,那么 的两个入口点customized
都已安装。
我希望能够使用 pip 将此包安装为轮文件,但从阅读源代码来看,pip 似乎明确跳过了“console_scripts”和“gui_scripts”以外的任何入口点:
随后,pip 使用与 easy_install 完全不同的代码集生成入口点脚本。据推测,我可以覆盖 pip 的这些实现,就像使用 easy_install 所做的那样,以创建我的自定义入口点,但我觉得我走错了路。
谁能建议一种更简单的方法来实现与 pip 兼容的自定义入口点?如果没有,我可以覆盖get_entrypoints
and move_wheel_files
。
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/
我错过了什么?
python - 将python包上传到pypi时如何生成md5签名?
我正在尝试为我在 pypi 上上传的新版本生成并添加 md5 哈希,但我无法找到如何执行此操作。
到目前为止,我发现的唯一参考是这个https://pip.pypa.io/en/latest/reference/pip_install.html但它不包含任何信息。
例如,我能够轻松添加 PGP 签名,但对于 md5,似乎没有文档。
我当前的发布命令如下所示:
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 的原因upload
。pip
有上传功能吗?
python - 如何安装带有 .whl 文件的 Python 包?
我在我的 Windows 机器上安装 Python 包时遇到问题,我想用 Christoph Gohlke 的 Window 二进制文件安装它。(根据我的经验,这减轻了许多其他软件包安装的麻烦)。但是,只有 .whl 文件可用。
http://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype
但是如何安装 .whl 文件?
笔记
- 我在 wheel 上找到了文档,但它们在解释如何安装 .whl 文件时似乎并不那么直截了当。
- 这个问题与这个问题重复,没有直接回答。
python - 如果您使用 Wheel 格式发布 Python,您还需要将它们发布为 egg 吗?
假设您支持 Python 2.6 或更高版本,发布 .egg 包是否有意义,或者发布 .whl 包是否足够?
就我而言,这些包是纯 python。
python - 轮文件和无尽的搜索循环
我无法安装 .whl 文件,因为我需要 pip 来安装它。要安装 pip,我需要运行一个 .whl 文件。我现在不知道如何安装 pip,因为我用来查找所有库的站点(http://www.lfd.uci.edu/~gohlke/pythonlibs/)摆脱了 exe。我在问他们是否是获得点子的另一种方式,因为我搜索并找不到任何东西。当我尝试引导 get-pip.py 时,我得到:
找不到任何满足 pip 要求的下载。根本找不到 pip 的分布
python - 轮文件安装
如何安装 .whl 文件?
我有轮子库,但我不知道如何使用它来安装这些文件。我有 .whl 文件,但我不知道如何运行它。
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背后的机器不工作?