标签: python-wheel

如何在 Azure DevOps 工件的轮版本号中包含分支名称?

我的目标是为 python 轮发布提供正常版本号,例如1.0.0,并为特定分支提供特定于分支的版本号,例如1.0.0.dev1+hg.5.b11e5e6f0b0b.

不幸的是,Azure DevOps 将大多数版本号视为无效而拒绝,并显示以下两条错误消息之一:

HTTPError: 400 Client Error: Bad Request - The package version provided is invalid. Versions should conform to the format described in PEP 440 and be under 128 characters. (DevOps Activity ID: 0000000-AAAA-2222-3333-11111111111) for url: https://pkgs.dev.azure.com/sample/_packaging/sample_libraries/pypi/upload

for version numbers like:

version='1.0.0.1.dev', ok
version='1.0.0.1.dev1', ok
version='1.0.0.1.dev_2', ok
version='1.0.0.1.dev_2_b', FAIL
version='1.0.0.1.dev_2-3', FAIL
version='1.0.0.1.dev_2.3', FAIL
version='1.0.0.1.dev_2.3', FAIL
version='1.0.0.d1.dev', FAIL
version='1.0.0.d.dev', FAIL
version='1.0.0.1d1.dev', FAIL
version='1.0.0.1d1.dev1', FAIL
version='1.0.0.1.dev1-3', FAIL
version='1.0.0.1.dev1.3', FAIL
version='1.0.0.1.dev1.3', FAIL
version='1.0.0.1.1.3', ok
version='1.0.0.1.1-3.3', …
Run Code Online (Sandbox Code Playgroud)

python artifact python-wheel azure-devops

4
推荐指数
1
解决办法
2317
查看次数

为什么 python setup.py bdist_wheel 创建一个构建文件夹?

感谢这个精彩的教程,我刚刚学会了将我自己的 python 包上传到 PyPI 我现在试图更好地理解如何wheels工作,我发现了这篇文章很有帮助。

但是,我仍然不明白为什么python setup.py bdist_wheel要创建一个几乎空的目录,并build以两个子文件夹命名:(bdist.win-amd64空)和lib(其中包含我的包的副本),以及开发人员稍后将通过执行 .txt 文件上传到 PyPI 的目录中的.whl文件。distpython -m twine upload dist/*

为什么build需要这个目录?我的意思是,dist目录还不够吗?而且,如果代码没有实际编译,为什么.whl称为二进制发行版。

distutils setuptools python-wheel python-packaging

4
推荐指数
1
解决办法
8340
查看次数

安装了 python3-wheel,安装 dlib 时仍然使用旧版“setup.py”

我已经分叉了 dlandon 的Zoneminder项目,以便使用Debian Bullseye而不是 Ubuntu 为i386构建 Docker 映像(我将其安装到 32 位迷你 PC 中)。

部分要求是安装dlib(最新的是 19.22.0)。我已经安装了所需的依赖项(python3-pippython3-setuptoolspython3-wheel,以及 GCC 和 CMake)。

安装时dlib,终端输出:

Collecting dlib
  Downloading dlib-19.22.0.tar.gz (7.4 MB)
Using legacy 'setup.py install' for dlib, since package 'wheel' is not installed.
Installing collected packages: dlib
    Running setup.py install for dlib: started
    ...
Run Code Online (Sandbox Code Playgroud)

相关部分是(即使已python3-wheel安装)

Using legacy 'setup.py install' for dlib, since package 'wheel' is not installed.
Run Code Online (Sandbox Code Playgroud)

dlib …

docker python-wheel dlib python-3.9

4
推荐指数
1
解决办法
9052
查看次数

我可以在 Linux 上将二进制轮上传到本地 devpi 吗?

是否可以使用“pip wheel”将 Linux 上的二进制轮上传到本地 devpi 服务器?或者我是否需要访问 setup.py 并从那里上传?在不需要 setup.py 的情况下构建轮子(它在幕后处理),只需要一个 setup.py 来上传结果,这似乎是一种耻辱。

这让我想知道:C 扩展 PyPI 目前只允许为 Windows 和 Mac OS X 上传特定于平台的轮子。为这些平台创建轮子仍然很有用,因为它避免了用户在安装时编译包的需要。

我正在做“pip -v -v -v wheel numpy”(例如),我有一个 pip.conf 和 .pypirc (都指向我们本地的 devpi)。

谢谢!

python devpi python-wheel

3
推荐指数
1
解决办法
2473
查看次数

Python virtualenvrequirements.txt默认包含wheel

在不小心把一切弄乱之后,我刚刚重新安装了 python 和 virtualenv。我注意到我新创建的环境中的requirements.txt 自动包含wheel==0.24.0。这是正常现象吗?这是什么?我知道 virtualenv 应该创建没有任何系统安装的软件包的新环境。

python virtualenv python-wheel

3
推荐指数
1
解决办法
2006
查看次数

错误:无效的命令“bdist_wheel”

在 RHEL 机器上

我有一些旧的 Django 项目要迁移到新服务器,这些项目是为 Python2.6、Django1.4.3 编写的

我已经安装了 python2.7,在我的主目录中创建了 virtualenvs,调整了对 Python 版本的路径和引用。

我为 Python2.7 创建了一个 virtualenv:

virtualenv -p python2.7 ~/.virtualenvs/my_site/
Run Code Online (Sandbox Code Playgroud)

当我激活 virtualenv 然后 cd 进入网站目录并运行

pip install -r requirements.txt

成功获取所有库后,requirements.txt中的每一行都显示以下错误:

Building wheels for collected packages: MySQL-python, Pillow...etc

Running setup.py bdist_wheel for MySQL-python ... error
Complete output from command /home/my_user/.virtualenvs/my_site/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-96k9a4/MySQL-python/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-ngSbQU --python-tag cp27:
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: …
Run Code Online (Sandbox Code Playgroud)

django python-2.7 python-wheel

3
推荐指数
1
解决办法
1万
查看次数

Pip 安装和平台特定的轮子

如何pip install选择要安装的轮子?

假设我为不同的平台构建了多个轮子,上传到 PyPI 会pip install <package>自动安装与平台匹配的正确轮子吗?

如果我构建了一个 Linux 特定的轮子并上传到 PyPI,而 Windows/Mac 上的某个人试图通过运行来安装它,会发生pip install <package>什么?

python pip python-wheel

3
推荐指数
1
解决办法
1570
查看次数

您如何将单个wheel文件上传到pypi服务器?

我从这里有一个用于编译包的wheel文件。我想将其托管在我的内部pypi服务器上。可能吗?

python pypi python-wheel

3
推荐指数
1
解决办法
564
查看次数

如何支持 Python 包中的替代依赖项?

我用 Python 编写了一个与 Qt 框架配合使用的实用程序库。我的代码是纯Python,并且与PyQt5和PySide2兼容。我的主模块可以从命令行单独运行python -m,也可以导入到另一个项目中。有没有一种干净的方法来指定项目在其轮子发行版中需要 PyQt5 或 PySide2?

这是我在研究中发现的内容,但我想知道是否有比这些选项更好的方法来打包项目:

我可以在项目的源代码分发中添加逻辑setup.py来检查 PyQt5 和 PySide2。然而,轮子是分发 Python 项目的推荐方式,据我所知,这种安装时逻辑使用轮子是不可能的。或者,我无法指定 PySide2 或 PyQt5 作为依赖项,并在安装说明中建议将其中之一与我的项目一起安装。

python packaging python-wheel

3
推荐指数
1
解决办法
538
查看次数

Python:从文件夹中pip安装轮依赖项

我知道我可以通过先写一个setup.py然后输入来创建一个轮子

python setup.py bdist_wheel
Run Code Online (Sandbox Code Playgroud)

如果我的轮子仅依赖于 pypi 中的包,我知道我可以通过执行以下操作来安装它们:

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

问题:如果我的轮子依赖于我的其他轮子,我可以让 pip 从文件夹自动安装它们吗?本质上使用文件夹作为穷人的私人pypi

更具体地说,如果pkg1我有一个setup.py

from setuptools import setup
setup(
    ...
    name = "pkg1",
    install_requires = ["requests"],
    ...
)
Run Code Online (Sandbox Code Playgroud)

而在pkg2我有:

from setuptools import setup
setup(
    ...
    name = "pkg2",
    install_requires = ["pkg1"],
    ...
)
Run Code Online (Sandbox Code Playgroud)

这将在安装时失败,因为 pip 会尝试pkg1在 pypi 中查找。是否可以告诉它只查看文件夹?

python pip python-wheel

3
推荐指数
1
解决办法
2740
查看次数