问题标签 [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 投票
2 回答
6884 浏览

python - 我可以把鸡蛋变成轮子吗?

我有一个已经构建/下载的 Python egg,我想将其转换为PEP 427中记录的轮格式。
我怎样才能做到这一点?

0 投票
1 回答
1938 浏览

python - 使用 pip 时如何避免重建现有的轮子?

With pip 1.5.X,我们可以使用pip wheel来构建和缓存一个包的轮子,然后使用--use-wheelwithpip install来从缓存的轮子中安装。

我正在尝试在环境设置脚本中使用此功能。这就是我正在尝试的:

我希望pip wheel在构建之前检查轮子是否已经存在。但它似乎忽略了现有的轮子并每次都构建。

有可能避免这种情况吗?

0 投票
2 回答
1332 浏览

pip - 从“轮子”安装时加载 psycopg2 模块时出错

我正在尝试从包含车轮档案的本地包目录安装一些 python 要求。我正在 Docker 容器中安装要求。

我正在遵循的步骤是:

然后,在我的内部Dockerfile

这可行 - 并且所有要求都已正确安装:

但是,如果我真的尝试在使用 的容器内运行某些东西psycopg2,那么我会得到以下信息:

我认为这与轮子的制造方式有关 - 我pip wheel在容器主机(Ubuntu 12.04)上运行。

我该如何解决这个问题 - 使用轮子显着减少了构建容器映像所需的时间,所以如果我能提供帮助,我不想恢复安装包?

0 投票
1 回答
523 浏览

python - Python Wheels 的条件依赖

我有一个 Python 包,我想把它做成一个轮子。在 Python 2 上,包使用该ipaddr库。在 Python 3 上,它使用内置ipaddress库。对于sdist包,我签入sys.version_infosetup.py根据 Python 版本设置要求。不幸的是,这似乎不适用于轮子。是否可以基于带有轮子的 Python 版本进行条件依赖?

0 投票
2 回答
12111 浏览

python - 如何在 python wheel 包中包含外部库

.so我想使用 cffi 模块为在 Linux 上嵌入并使用外部库 () 的 python 创建包。

是否有标准方法将 .so 文件包含到 python 包中?

该包将仅在内部使用,不会发布到 pypi。

我认为 Wheel 包是最好的选择 - 他们会创建平台特定的包,其中所有文件都准备好被复制,因此不需要在目标环境上构建任何东西。

0 投票
2 回答
13726 浏览

python - 如何从现有的本机库制作 Python Wheel?

假设我有一个独立于任何 Python 机制构建的本机共享库(.dll 或 .so),以及一个使用 ctypes 与库交互的 Python 模块。有没有办法可以将它们构建到 .whl 包中?如果是这样,怎么做?

假设这是可能的,我想我需要安装和使用 wheel 包,python setup.py bdist_wheel但我的 setup.py 需要看起来像什么?

我想这样做,这样我就可以将各种平台的 Wheels 上传到一个私有包索引中,并能够为我所在的平台 pip 安装适当的一个。

0 投票
2 回答
15817 浏览

python - 如何通过 pip 下载跨平台轮子?

我习惯于使用 Pip 预下载包,然后将它们复制到目标机器进行部署。使用新引入的 Python Wheels,我不得不“pip ... --no-use-wheel”,因为一些下载的包是特定于平台的(我正在 OSX 上开发并部署到 Debian)并且不会安装在目标机器上。有没有办法为目标平台(或独立于平台)下载 Wheels?

0 投票
1 回答
819 浏览

python - 点轮条件依赖

在为开发 python 包而使用 virtualenv 时,我用来发出“pip wheel”。生成包所需的所有车轮档案。我通过在 setuptools extras_require 参数中列出条件依赖项来开始使用它们。是否可以生成特定条件依赖的车轮档案?

不支持类似:pip wheel ".[conditional_feature]" 的东西。(至少在 python-2.7 上)请注意,我可以在 virtualenv 中安装这些依赖项: pip install -e ".[conditional_feature]"

0 投票
2 回答
5746 浏览

python - 安装轮子后安装脚本

使用from setuptools.command.install import install,如果我运行python setup.py install. 这是相当微不足道的。

目前,脚本只打印一些文本,但我希望它处理安装新包时需要发生的系统更改——例如,备份包正在使用的数据库。

我想为我的包生成一个 Python 轮,然后复制它并将其安装在一组部署机器上。但是,我的自定义安装脚本不再在部署机器上运行。

我究竟做错了什么?这甚至可能吗?

0 投票
6 回答
40365 浏览

python - 如何将其他文件添加到轮子?

如何控制轮子中包含哪些文件?它似乎MANIFEST.in不被python setup.py bdist_wheel.

更新

我对从源代码压缩包和轮子安装之间的区别是错误的。源代码分发包含 中指定的文件MANIFEST.in,但安装的包只有 python 文件。需要采取步骤来识别应安装的其他文件,无论安装是通过源代码分发、egg 还是 wheel。也就是说,额外的包文件需要package_data ,而包外的文件(如命令行脚本或系统配置文件)需要data_files

原始问题

我有一个项目,我一直在用python setup.py sdist它来构建我的包,MANIFEST.in控制包含和排除的文件,以及pyromacheck-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)安装到文件夹中,并且测试现在可以正常运行。感谢您的建议!