MagicStack / MagicStack/uvloop
Unable to pip install uvloop on Android using Termux
還沒有人認領這個 Issue。
- 主要語言
- Cython
- 星號
- 11.9k
- 分支
- 616
- PR 合併指標
- 30 天內沒有已合併 PR
描述
~ $ pip install uvloop
Collecting uvloop
Using cached uvloop-0.19.0.tar.gz (2.3 MB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: uvloop
Building wheel for uvloop (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building wheel for uvloop (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [256 lines of output]
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-aarch64-cpython-311
creating build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/init.py -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/_noop.py -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/_testbase.py -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/_version.py -> build/lib.linux-aarch64-cpython-311/uvloop
running egg_info
writing uvloop.egg-info/PKG-INFO
writing dependency_links to uvloop.egg-info/dependency_links.txt
writing requirements to uvloop.egg-info/requires.txt
writing top-level names to uvloop.egg-info/top_level.txt
reading manifest file 'uvloop.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files matching '' found under directory 'vendor/libuv/.git'
warning: no previously-included files matching '' found under directory 'vendor/libuv/docs'
warning: no previously-included files matching '*' found under directory 'vendor/libuv/img'
adding license file 'LICENSE-APACHE'
adding license file 'LICENSE-MIT'
writing manifest file 'uvloop.egg-info/SOURCES.txt'
/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/command/build_py.py:215: _Warning: Package 'uvloop.handles' is absent from the packages configuration.
!!
********************************************************************************
############################
# Package would be ignored #
############################
Python recognizes 'uvloop.handles' as an importable package[^1],
but it is absent from setuptools' `packages` configuration.
This leads to an ambiguous overall configuration. If you want to distribute this
package, please make sure that 'uvloop.handles' is explicitly added
to the `packages` configuration field.
Alternatively, you can also rely on setuptools' discovery methods
(for example by using `find_namespace_packages(...)`/`find_namespace:`
instead of `find_packages(...)`/`find:`).
You can read more about "package discovery" on setuptools documentation page:
- https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
If you don't want 'uvloop.handles' to be distributed and are
already explicitly excluding 'uvloop.handles' via
`find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
you can try to use `exclude_package_data`, or `include-package-data=False` in
combination with a more fine grained `package-data` configuration.
You can read more about "package data files" on setuptools documentation page:
- https://setuptools.pypa.io/en/latest/userguide/datafiles.html
[^1]: For Python, any directory (with suitable naming) can be imported,
even if it does not contain any `.py` files.
On the other hand, currently there is no concept of package data
directory, all directories are treated like packages.
********************************************************************************
!!
check.warn(importable)
/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/command/build_py.py:215: _Warning: Package 'uvloop.includes' is absent from the `packages` configuration.
!!
********************************************************************************
############################
# Package would be ignored #
############################
Python recognizes 'uvloop.includes' as an importable package[^1],
but it is absent from setuptools' `packages` configuration.
This leads to an ambiguous overall configuration. If you want to distribute this
package, please make sure that 'uvloop.includes' is explicitly added
to the `packages` configuration field.
Alternatively, you can also rely on setuptools' discovery methods
(for example by using `find_namespace_packages(...)`/`find_namespace:`
instead of `find_packages(...)`/`find:`).
You can read more about "package discovery" on setuptools documentation page:
- https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
If you don't want 'uvloop.includes' to be distributed and are
already explicitly excluding 'uvloop.includes' via
`find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
you can try to use `exclude_package_data`, or `include-package-data=False` in
combination with a more fine grained `package-data` configuration.
You can read more about "package data files" on setuptools documentation page:
- https://setuptools.pypa.io/en/latest/userguide/datafiles.html
[^1]: For Python, any directory (with suitable naming) can be imported,
even if it does not contain any `.py` files.
On the other hand, currently there is no concept of package data
directory, all directories are treated like packages.
********************************************************************************
!!
check.warn(importable)
copying uvloop/cbhandles.pxd -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/cbhandles.pyx -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/dns.pyx -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/errors.pyx -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/loop.pxd -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/loop.pyi -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/loop.pyx -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/lru.pyx -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/pseudosock.pyx -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/py.typed -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/request.pxd -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/request.pyx -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/server.pxd -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/server.pyx -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/sslproto.pxd -> build/lib.linux-aarch64-cpython-311/uvloop
copying uvloop/sslproto.pyx -> build/lib.linux-aarch64-cpython-311/uvloop
creating build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/async_.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/async_.pyx -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/basetransport.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/basetransport.pyx -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/check.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/check.pyx -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/fsevent.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/fsevent.pyx -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/handle.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/handle.pyx -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/idle.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/idle.pyx -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/pipe.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/pipe.pyx -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/poll.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/poll.pyx -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/process.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/process.pyx -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/stream.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/stream.pyx -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/streamserver.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/streamserver.pyx -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/tcp.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/tcp.pyx -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/timer.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/timer.pyx -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/udp.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/handles
copying uvloop/handles/udp.pyx -> build/lib.linux-aarch64-cpython-311/uvloop/handles
creating build/lib.linux-aarch64-cpython-311/uvloop/includes
copying uvloop/includes/__init__.py -> build/lib.linux-aarch64-cpython-311/uvloop/includes
copying uvloop/includes/consts.pxi -> build/lib.linux-aarch64-cpython-311/uvloop/includes
copying uvloop/includes/debug.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/includes
copying uvloop/includes/flowcontrol.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/includes
copying uvloop/includes/python.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/includes
copying uvloop/includes/stdlib.pxi -> build/lib.linux-aarch64-cpython-311/uvloop/includes
copying uvloop/includes/system.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/includes
copying uvloop/includes/uv.pxd -> build/lib.linux-aarch64-cpython-311/uvloop/includes
running build_ext
checking for a BSD-compatible install... /data/data/com.termux/files/usr/bin/install -c
checking whether build environment is sane... yes
checking for a race-free mkdir -p... /data/data/com.termux/files/usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... yes
checking build system type... aarch64-unknown-linux-gnu
checking host system type... aarch64-unknown-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... gcc3
checking for gcc way to treat warnings as errors... -Werror
checking if gcc supports __attribute__(( visibility("default") ))... yes
checking if gcc supports -fvisibility=hidden... yes
checking if gcc supports -fno-strict-aliasing flag... yes
checking if gcc supports -fno-strict-aliasing flag... yes
checking if gcc supports -g flag... yes
checking if gcc supports -std=gnu89 flag... yes
checking if gcc supports -Wall flag... yes
checking if gcc supports -Wextra flag... yes
checking if gcc supports -Wno-long-long flag... yes
checking if gcc supports -Wno-unused-parameter flag... yes
checking if gcc supports -Wstrict-prototypes flag... yes
checking for ar... no
checking for lib... no
checking for link... link -lib
checking the archiver (link -lib) interface... unknown
configure: error: could not determine link -lib interface
Traceback (most recent call last):
File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
main()
File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/data/com.termux/files/usr/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
return _build_backend().build_wheel(wheel_directory, config_settings,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 415, in build_wheel
return self._build_with_temp_dir(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 397, in _build_with_temp_dir
self.run_setup()
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 313, in run_setup
exec(code, locals())
File "<string>", line 233, in <module>
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/__init__.py", line 108, in setup
return distutils.core.setup(**attrs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 184, in setup
return run_commands(dist)
^^^^^^^^^^^^^^^^^^
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/_distutils/core.py", line 200, in run_commands
dist.run_commands()
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 970, in run_commands
self.run_command(cmd)
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/dist.py", line 945, in run_command
super().run_command(command)
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 989, in run_command
cmd_obj.run()
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/command/bdist_wheel.py", line 373, in run
self.run_command("build")
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command
self.distribution.run_command(command)
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/dist.py", line 945, in run_command
super().run_command(command)
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 989, in run_command
cmd_obj.run()
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/_distutils/command/build.py", line 135, in run
self.run_command(cmd_name)
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 316, in run_command
self.distribution.run_command(command)
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/dist.py", line 945, in run_command
super().run_command(command)
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 989, in run_command
cmd_obj.run()
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/command/build_ext.py", line 93, in run
_build_ext.run(self)
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/Cython/Distutils/old_build_ext.py", line 186, in run
_build_ext.build_ext.run(self)
File "/data/data/com.termux/files/usr/tmp/pip-build-env-x7iwebqy/overlay/lib/python3.11/site-packages/setuptools/_distutils/command/build_ext.py", line 359, in run
self.build_extensions()
File "<string>", line 196, in build_extensions
File "<string>", line 175, in build_libuv
File "/data/data/com.termux/files/usr/lib/python3.11/subprocess.py", line 571, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['./configure']' returned non-zero exit status 1.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for uvloop
Failed to build uvloop
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (uvloop)
~ $
貢獻指南
這個儲存庫沒有索引到貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
研究方向
在所示的 Python 3.11 環境中,於 Android Termux 重現 pip install uvloop,然後檢查所顯示的 configure 檢查之後出現的原生建置失敗。確立並驗證 uvloop 支援的 Android/Termux 安裝路徑,或透過清楚的失敗說明記錄不相容性後,該 issue 即完成。
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- android, python
- 領域
- build-system, operating-systems
- Issue 類型
- 缺陷
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 需要釐清
- 新手友好度
- 35/100