我花了一点时间让我的 treap 模块(如字典,但总是按键排序)与 setuptools 39.0.1 一起使用。
我希望它能够从包含的 .c 文件编译并安装 Cython 版本,或者在失败时退回到纯 python 版本。
我目前正在使用:
setup(
name='treap',
py_modules=[
'treap',
'py_treap',
'nest',
],
# ext_modules=cythonize("pyx_treap.pyx"),
ext_modules=[Extension('pyx_treap', ['pyx_treap.c'], optional=True)],
# setup_requires=[
# 'Cython'
# ],
version=version,
description='Python implementation of treaps,
)
Run Code Online (Sandbox Code Playgroud)
...加上一些似乎不相关的设置选项。
如果我运行 python3.6 setup.py build,我得到:
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.6
copying treap.py -> build/lib.linux-x86_64-3.6
copying py_treap.py -> build/lib.linux-x86_64-3.6
copying nest.py -> build/lib.linux-x86_64-3.6
running build_ext
building 'pyx_treap' extension
creating build/temp.linux-x86_64-3.6
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g
-fstack-protector-strong -Wformat …Run Code Online (Sandbox Code Playgroud) 我面临着一个非常慢的 Docker 构建过程,部分原因是我们一遍又一遍地构建和安装所有 Python 包。我非常想加快速度。
\n\n我已经从 PyPI 下载了这些软件包,这样我就可以仔细查看它们。我还将它们放在本地 pypiserver 中(实际上是两个),并确认我可以从那里安装它们。
\n\n这些软件包的扩展名是:
\n\n87 .whl \xc2\xa0 \xc2\xa0............................................................\n23 .tar.gz ................\n\xc2\xa02 .zip \xc2\xa0 \xc2\xa0.\nRun Code Online (Sandbox Code Playgroud)\n\n我在想,如果我将其中一些 .tar.gz(以及 .zip? 和源代码 .whl?) 转换为 Manylinux 轮子,并将它们放入其中,安装速度会快得多具有相同版本号的本地 pypiserver 实例。\xc2\xa0 事实上,一个包往往无法随机编译 - 因此如果成功的话,构建过程也应该更可靠一点。
\n\n是否有一个(相对?)简单的过程来做这样的事情? \xc2\xa0 也就是说,从 pypi 获取 .tar.gz (不是任意的 .tar.gz - 只有少数来自 pypi)并将其转换为二进制的 Manylinux .whl?
\n\n例如,我们的 docker 构建中最耗时的包可能是https://pypi.org/project/pycapnp/ 在我的 Linux Mint 19.1 笔记本电脑上构建和安装大约需要 80 秒。这是一个 .tar.gz。
\n\n谢谢!
\n我正在开发一个创建 N 个索引和 N 个别名的应用程序,并且这些索引和别名之间存在一一对应的关系。
但偶尔,我会得到 N 个索引和 N-1 个别名,其中一个索引的名称本应由别名使用。由于某种原因,当发生这种情况时,虚假索引“应该是别名”的状态为黄色,而其他索引均为绿色。
什么可能导致索引成为唯一一个黄色的索引?我希望理解这一点可以帮助我缩小需要仔细检查的代码部分以修复错误的范围。
我的 elasticsearch.yml 只有:
cluster.name: "docker-cluster"
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["127.0.0.1", "[::1]"]
Run Code Online (Sandbox Code Playgroud)
在生产中我们可能有更多的ES节点,但这只是一个测试系统,所以只有一个ES节点。
是否可以使用“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)。
谢谢!