问题标签 [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 egg,我想将其转换为PEP 427中记录的轮格式。
我怎样才能做到这一点?
python - 使用 pip 时如何避免重建现有的轮子?
With pip 1.5.X
,我们可以使用pip wheel
来构建和缓存一个包的轮子,然后使用--use-wheel
withpip install
来从缓存的轮子中安装。
我正在尝试在环境设置脚本中使用此功能。这就是我正在尝试的:
我希望pip wheel
在构建之前检查轮子是否已经存在。但它似乎忽略了现有的轮子并每次都构建。
有可能避免这种情况吗?
pip - 从“轮子”安装时加载 psycopg2 模块时出错
我正在尝试从包含车轮档案的本地包目录安装一些 python 要求。我正在 Docker 容器中安装要求。
我正在遵循的步骤是:
然后,在我的内部Dockerfile
:
这可行 - 并且所有要求都已正确安装:
但是,如果我真的尝试在使用 的容器内运行某些东西psycopg2
,那么我会得到以下信息:
我认为这与轮子的制造方式有关 - 我pip wheel
在容器主机(Ubuntu 12.04)上运行。
我该如何解决这个问题 - 使用轮子显着减少了构建容器映像所需的时间,所以如果我能提供帮助,我不想恢复安装包?
python - Python Wheels 的条件依赖
我有一个 Python 包,我想把它做成一个轮子。在 Python 2 上,包使用该ipaddr
库。在 Python 3 上,它使用内置ipaddress
库。对于sdist
包,我签入sys.version_info
以setup.py
根据 Python 版本设置要求。不幸的是,这似乎不适用于轮子。是否可以基于带有轮子的 Python 版本进行条件依赖?
python - 如何在 python wheel 包中包含外部库
.so
我想使用 cffi 模块为在 Linux 上嵌入并使用外部库 () 的 python 创建包。
是否有标准方法将 .so 文件包含到 python 包中?
该包将仅在内部使用,不会发布到 pypi。
我认为 Wheel 包是最好的选择 - 他们会创建平台特定的包,其中所有文件都准备好被复制,因此不需要在目标环境上构建任何东西。
python - 如何从现有的本机库制作 Python Wheel?
假设我有一个独立于任何 Python 机制构建的本机共享库(.dll 或 .so),以及一个使用 ctypes 与库交互的 Python 模块。有没有办法可以将它们构建到 .whl 包中?如果是这样,怎么做?
假设这是可能的,我想我需要安装和使用 wheel 包,python setup.py bdist_wheel
但我的 setup.py 需要看起来像什么?
我想这样做,这样我就可以将各种平台的 Wheels 上传到一个私有包索引中,并能够为我所在的平台 pip 安装适当的一个。
python - 如何通过 pip 下载跨平台轮子?
我习惯于使用 Pip 预下载包,然后将它们复制到目标机器进行部署。使用新引入的 Python Wheels,我不得不“pip ... --no-use-wheel”,因为一些下载的包是特定于平台的(我正在 OSX 上开发并部署到 Debian)并且不会安装在目标机器上。有没有办法为目标平台(或独立于平台)下载 Wheels?
python - 点轮条件依赖
在为开发 python 包而使用 virtualenv 时,我用来发出“pip wheel”。生成包所需的所有车轮档案。我通过在 setuptools extras_require 参数中列出条件依赖项来开始使用它们。是否可以生成特定条件依赖的车轮档案?
不支持类似:pip wheel ".[conditional_feature]" 的东西。(至少在 python-2.7 上)请注意,我可以在 virtualenv 中安装这些依赖项: pip install -e ".[conditional_feature]"
python - 安装轮子后安装脚本
使用from setuptools.command.install import install
,如果我运行python setup.py install
. 这是相当微不足道的。
目前,脚本只打印一些文本,但我希望它处理安装新包时需要发生的系统更改——例如,备份包正在使用的数据库。
我想为我的包生成一个 Python 轮,然后复制它并将其安装在一组部署机器上。但是,我的自定义安装脚本不再在部署机器上运行。
我究竟做错了什么?这甚至可能吗?
python - 如何将其他文件添加到轮子?
如何控制轮子中包含哪些文件?它似乎MANIFEST.in
不被python setup.py bdist_wheel
.
更新:
我对从源代码压缩包和轮子安装之间的区别是错误的。源代码分发包含 中指定的文件MANIFEST.in
,但安装的包只有 python 文件。需要采取步骤来识别应安装的其他文件,无论安装是通过源代码分发、egg 还是 wheel。也就是说,额外的包文件需要package_data ,而包外的文件(如命令行脚本或系统配置文件)需要data_files。
原始问题
我有一个项目,我一直在用python setup.py sdist
它来构建我的包,MANIFEST.in
控制包含和排除的文件,以及pyroma和check-manifest来确认我的设置。
我最近将它转换为双 Python 2 / 3 代码,并添加了一个 setup.cfg
我可以用 构建一个轮子python setup.py bdist_wheel
,它似乎是一个万能轮子。但是,它不包括MANIFEST.in
.
安装什么?
我挖得更深了,现在对包装和轮子有了更多的了解。这是我学到的:
我将两个包文件上传到PyPi 上的 multigtfs 项目:
multigtfs-0.4.2.tar.gz
- 源 tar 球,其中包括MANIFEST.in
.multigtfs-0.4.2-py2.py3-none-any.whl
- 有问题的二进制分布。
我创建了两个新的虚拟环境,都使用 Python 2.7.5,并安装了每个包 ( pip install multigtfs-0.4.2.tar.gz
)。这两个环境几乎相同。它们有不同.pyc
的文件,即“编译”的 Python 文件。有日志文件记录磁盘上的不同路径。从源 tar 球安装包括一个文件夹multigtfs-0.4.2-py27.egg-info
,详细说明安装,而轮子安装有一个multigtfs-0.4.2.dist-info
文件夹,其中包含该过程的详细信息。但是从使用multigtfs项目的代码来看,两种安装方式并没有什么区别。
明确地说,我的测试也没有使用 .zip 文件,因此测试套件将失败:
指定附加文件
使用答案中的建议,我添加了一些额外的指令setup.py
:
这会将 zip 文件(以及 README)安装到文件夹中,并且测试现在可以正常运行。感谢您的建议!