标签: python-wheel

Python 打包:从 bdist_wheel 中排除目录

我有以下项目结构:

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 docs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 examples\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 MANIFEST.in\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.rst\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.cfg\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 myproject\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想将我的项目捆绑到一个轮子中。为此,我使用以下内容setup.py

\n\n
#!/usr/bin/env python\n\nfrom setuptools import setup, find_packages\n\nsetup(name=\'myproject\',\n      version=\'1.0\',\n      description=\'Great project\'\n      long_description=open(\'README.rst\').read(),\n      author=\'Myself\'\n      packages=find_packages(exclude=[\'tests\',\'test\',\'examples\'])\n     )\n
Run Code Online (Sandbox Code Playgroud)\n\n

运行时python setup.py bdist_wheel,该examples目录包含在轮子中。我该如何防止这种情况?

\n\n

根据

\n\n

从 setuptools 包中排除顶级目录

\n\n

我希望这examples被排除在外。

\n

python setuptools python-wheel

6
推荐指数
1
解决办法
3085
查看次数

安装Python包时如何判断支持哪个版本的.whl文件

最近,我只是尝试用 python 连接我的 SQL Server。所以我只是从“ http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql下载 .whl 文件。\在cmd窗口中,我使用以下命令:

\n\n
pip install some-package.whl\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的电脑是window 64位,我尝试了以下所有.whl文件。\n http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql

\n\n
pymssql\xe2\x80\x911.0.3\xe2\x80\x91cp27\xe2\x80\x91none\xe2\x80\x91win32.whl\npymssql\xe2\x80\x912.1.3\xe2\x80\x91cp27\xe2\x80\x91cp27m\xe2\x80\x91win32.whl\npymssql\xe2\x80\x912.1.3\xe2\x80\x91cp27\xe2\x80\x91cp27m\xe2\x80\x91win_amd64.whl\npymssql\xe2\x80\x912.1.3\xe2\x80\x91cp34\xe2\x80\x91cp34m\xe2\x80\x91win32.whl\npymssql\xe2\x80\x912.1.3\xe2\x80\x91cp34\xe2\x80\x91cp34m\xe2\x80\x91win_amd64.whl\npymssql\xe2\x80\x912.1.3\xe2\x80\x91cp35\xe2\x80\x91cp35m\xe2\x80\x91win32.whl\npymssql\xe2\x80\x912.1.3\xe2\x80\x91cp35\xe2\x80\x91cp35m\xe2\x80\x91win_amd64.whl\npymssql\xe2\x80\x912.1.3\xe2\x80\x91cp36\xe2\x80\x91cp36m\xe2\x80\x91win32.whl\npymssql\xe2\x80\x912.1.3\xe2\x80\x91cp36\xe2\x80\x91cp36m\xe2\x80\x91win_amd64.whl\n
Run Code Online (Sandbox Code Playgroud)\n\n

但安装失败,并显示错误消息,该系统不支持.whl文件。我应该怎么办。有人可以帮助我吗?

\n

python sql-server installation pymssql python-wheel

6
推荐指数
2
解决办法
5512
查看次数

如何使用指定附加功能的轮子进行 pip install?

我有一个带有附加功能的软件包,通常可以使用以下命令进行安装。

pip install package[extras]
Run Code Online (Sandbox Code Playgroud)

但是,我也可以通过轮子安装相同的包,指定一些轮子 URL,如下所示。

pip install package_url.whl
Run Code Online (Sandbox Code Playgroud)

在通过轮子 url 安装时是否也可以指定附加功能?

pip install package_url.whl[extras]
Run Code Online (Sandbox Code Playgroud)

installation pip python-wheel

6
推荐指数
1
解决办法
1673
查看次数

如何使用 setuptools 将 Python 标记添加到 bdist_wheel 命令?

假设我有一个简单的库,它使用setuptools进行打包和分发。在这种情况下,库还需要最低版本的 Python 3.6,这意味着我的 setup.py 将如下所示:

from setuptools import setup, find_packages

setup(
    name='something',
    version='0.0.1',

    description='description',
    long_description=long_description,

    # More metadata

    packages=find_packages(exclude=['tests', 'docs']),

    python_requires='>=3.6'
)
Run Code Online (Sandbox Code Playgroud)

现在,当我运行时python setup.py bdist_wheel,我得到一个名为something-0.0.1-py3-none-any.whl. 在这里很明显,python_requiressetuptools确定我的轮子的 Python 标签时,wheel 忽略了选项(它应该是py36但默认的py3)。显然,我意识到我可以--python-tag py36从命令行传入,这将完成这项工作,但是我用于部署我的库的持续部署服务只接受我正在使用的发行版的名称 ( bdist_wheel)。因此,我无法传递任何命令行参数。

经过一番研究,我发现我可以从bdist_wheel类继承并覆盖python_tag成员变量,但是根据wheel README:

应该注意的是,wheel打算用作库,因此没有稳定的公共 API。

因此,我想避免从bdist_wheel类继承,这可能会迫使我在每次发生重大更改时重写我的类。

有没有其他方法可以通过 setuptools 传递轮子的 Python 标签?

python setuptools continuous-deployment python-wheel

6
推荐指数
1
解决办法
2783
查看次数

如何让 pip 告诉我为什么它与 PyPI 二进制轮子不匹配?

我正在构建自己的 Python 安装,然后使用 pip 安装一些包。我想将预构建的二进制轮用于Cryptography等软件包。

  • Python 2.7.15 / 2.7.16
  • 点 19.0.3
  • 安装工具 40.8.0

在 GNU/Linux 上就可以了:它抓住了 Manylinux1 的轮子,一切都工作得很好。

在 MacOS 上,它拒绝下载大多数版本的任何二进制轮。我已经为 pip 添加了很多-v选项,但它只说了:

$ mypython -s -u -m pip install -v --only-binary 'cryptography' 'cryptography==2.6.1'
  ...
Skipping link https://files.pythonhosted.org/packages/.../cryptography-2.6.1-cp27-cp27m-macosx_10_6_intel.whl#sha256=... (from https://pypi.org/simple/cryptography/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*); it is not compatible with this Python
  ...
  Could not find a version that satisfies the requirement cryptography==2.6.1 (from versions: 1.0.1, 1.0.2, 1.1, 1.1.1, 1.1.2, 1.2, 1.2.1, 1.2.2, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.4, 1.5, 1.5.1, …
Run Code Online (Sandbox Code Playgroud)

python macos pip python-wheel python-packaging

6
推荐指数
2
解决办法
2249
查看次数

pypi:如何检查包是否使用wheel

我想编写一个脚本来遍历 pypi 存储库上的所有包,以检查它们是否正在使用wheelegg.

我知道根据新标准,所有软件包都必须使用wheel而不是egg. 我在这个网站上找到了这个信息。他们还有使用和不使用wheel. 但是,他们只列出了前几个软件包。但是,我想检查 pypi 上的所有软件包。我知道在 pypi 网站上,他们显示是否可以下载文件类型,例如,表明没有可供下载的wheel文件类型,相反,表明可以下载wheel格式。这样的事情可以帮助我实现我的目标吗?

我当然不希望有人为我编写脚本,但我想知道如何确定包是否正在使用wheel.

python egg pip pypi python-wheel

6
推荐指数
1
解决办法
4067
查看次数

pypi:为什么不是所有的包都使用wheel?

这个pythonwheel网站说,前 360 个软件包中只有 300 个使用wheel. 我进一步分析了Python生态系统,发现前5000个包中大约有2961个包使用了wheel,而其他包则没有。

我的问题是:

  1. 如果他们不使用wheel,他们会使用吗egg
  2. 他们为什么不使用wheel?这只是作者的懒惰还是其他什么原因,阻止他们使用wheel。
  3. 我还从这篇文章中发现wheel停止安装时脚本(如果我错了,请纠正我)。那么,是不是由于某些wheel功能,这些软件包不能使用wheel(因为它们setup.py在安装过程中可能需要文件的某些功能,例如安装时脚本)。

python egg pip pypi python-wheel

6
推荐指数
1
解决办法
1300
查看次数

从requirements.txt中安装车轮

我正在尝试配置我requirements.txt的以下内容:

wheel
apache-airflow
Run Code Online (Sandbox Code Playgroud)

我创建python3.8 -m venv ~/test-env并尝试进行安装。问题是

python -m pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

产生大量消息

error: invalid command 'bdist_wheel'                                                                                                                                                                                            

----------------------------------------                                                                                                                                                                                        
Failed building wheel for thrift        
Run Code Online (Sandbox Code Playgroud)

我确保wheel在安装时requirements.txt安装了它:

Collecting wheel (from -r requirements.txt (line 1))                                                                                                                                                                              
Using cached https://files.pythonhosted.org/packages/00/83/b4a77d044e78ad1a45610eb88f745be2fd2c6d658f9798a15e384b7d57c9/wheel-0.33.6-py2.py3-none-any.
Run Code Online (Sandbox Code Playgroud)

但是如果我单独安装

python -m pip install wheel
python -m pip install -r requirements
Run Code Online (Sandbox Code Playgroud)

它工作正常,并且python -m pip -r requirements没有错误消息。

那么是不是可以将wheel安装放入requirements.txt?安装时处理它的正确方法是什么venv?安装前要requirements.txt安装吗?

python pip python-3.x python-venv python-wheel

6
推荐指数
1
解决办法
6284
查看次数

为什么Python 3.6默认不安装wheel包?

这是我的问题:我需要分发我创建的 Python 包。我想创建轮子,因为这是现在分发 Python 包的首选方式。

在我的机器上:没问题。

然而,在我的客户端服务器上,我无法控制用于创建轮子的 Python (3.6.3)。还有——惊喜!- Python 3.6 中默认不包含wheel包!

是的,我知道我可以这样做:sudo pip install wheel但我在那个环境中没有 sudo 权限。

我可以创建一个virtualenv,在该虚拟环境中安装wheel,然后创建我的包(我可能最终会这样做),但这是多么痛苦的事情!

我在这里错过了什么吗?

如果没有,我认为存在不一致之处:一方面,我们被告知要使用轮子,但另一方面,“首选”机制在普通 Python 中不可用(至少在 Python 3.6 中)

对此有什么想法吗?

python python-wheel

6
推荐指数
1
解决办法
1196
查看次数

如何使用 github actions 发布 pipwheels

也许是一个有点宽泛的问题,但我认为这对于任何使用 github 的 python 包的维护者来说都是相关的,并且可以显着减少他们的工作量,所以希望权力能够让它成立。

本质上,在我看来:

  • 为 python 构建和发布轮子很好,但有时它们必须特定于操作系统才能正常工作(即构建在类似的操作系统/环境上)
  • Github actions 提供了广泛的操作系统来运行作业(目前免费),因此它可以用来构建这些轮子
  • 可以轻松使用 Github actions 通过 twine 发布 sidst

所以我的问题是:

  • 有没有一种直接的方法来为一堆环境构建轮子(例如在 github actions 中使用 OS/env 矩阵),然后通过 github actionse.g 发布它们。通过将它们聚集在一处然后运行一些 twine 命令?问题似乎是无法通过 github 操作在不同的 envs/vms 设置之间进行通信。

我可以想到涉及中间 s3 存储桶的各种解决方案,但对于 pypi 和/或 github 操作在这方面的工作方式,我可能犯了很大的错误,因此我正在浏览一个非常简单的问题。

python github pypi python-wheel github-actions

6
推荐指数
1
解决办法
2294
查看次数