python - 如何指示 pip 使用 --no-binary 标志安装要求
问题描述
我有一个要打包的应用程序,它依赖于protobuf
. 必须像这样安装 protobuf:
pip install protobuf --no-binary=protobuf protobuf
我怎样才能将它包含在我的setup.py
install_requires
?
注意:我的要求要求此过程自动通过 setup.py。
因此,我尝试在 install_requires 或 requirements.txt 中包含这些内容,但没有成功:
#requirements.txt
protobuf
--no-binary=protobuf
当我打包我的应用程序时,如何提供--no-binary=protobuf protobuf
(我知道是pip
标志)安装?protobuf
更新: 我想要的是按照我在以这种方式安装我的包时提到的方式安装 protobuf 包:
`pip install my_package.whl`
解决方案
使用requirements.txt
文件安装
我想你可以简单地在同一行添加标志。这对我有用:
# requirements.txt
protobuf --no-binary protobuf
pandas
有了这个requirements.txt
,protobuf 安装时没有二进制文件,而 pandas 仍然安装了.whl
.
通过运行pip install -r requirements.txt
,你会得到类似的东西:
$ pip install -r requirements.txt
Collecting pandas
...
Collecting protobuf
Using cached protobuf-3.17.3.tar.gz (228 kB)
Skipping wheel build for protobuf, due to binaries being disabled for it.
Installing collected packages: protobuf, pandas
Running setup.py install for protobuf ... done
Successfully installed pandas-1.1.5 protobuf-3.17.3
在打包的库中自动安装
如果你想在protobuf
不包含二进制文件的情况下包含依赖项,并且你正在用一个文件打包你的库,setup.py
你可以package@http://link/to/package.tar.gz
在.install_requires
setup
from setuptools import setup, find_packages
setup(
name='your package`,
version='0.1',
packages=find_packages(),
install_requires=[
'click',
'pyyaml',
'protobuf@https://github.com/protocolbuffers/protobuf/releases/download/v3.17.3/protobuf-python-3.17.3.tar.gz'
]
)
此解决方案的缺点是它还指定了依赖项的版本。
希望这可以帮助 !
推荐阅读
- asp.net-core - 为什么 IHttpContextAccessor 总是在 Blazor 服务器端获得空 IP?
- python - 敌人一直向右移动
- python - pip 和 conda 在哪里保存已安装软件包的列表,以便他们知道谁安装了什么?
- c++ - 当窗口大小发生变化时,如何调整窗口的大小/重新定位控件
- c - 将两个无符号整数相乘为无符号整数
- javascript - 将数据插入弹出窗口(需要帮助)
- android - Android studio 无法检测到 res/drawable 中的源文件
- python - 如何根据另一个列表的值将 1 添加到列表中,这给出了 1 应该去的位置
- asp.net-core - 如何制作一种验证 cookie 身份验证的方法?ASP.NET 核心 3.1
- xsd - XSD 验证具有不同内容的相同元素名称