当我运行以下命令来安装tensorflow时,出现此错误。
python3 -m pip install tensorflow-macos
Run Code Online (Sandbox Code Playgroud)
ERROR: Failed building wheel for h5py
Failed to build h5py
ERROR: Could not build wheels for h5py, which is required to install pyproject.toml-based projects
Run Code Online (Sandbox Code Playgroud)
我厌倦了从官方链接( https://pypi.org/project/h5py/#files )手动安装这个轮子,它已正确安装,但我仍然遇到相同的错误。
我在 Mac Book M1 芯片上遇到了上述问题。
我有一个简单的 python 包,我们称之为my_package。
它的文件位于src/python/my_package.\n此外,存储库根目录中有一个data文件夹,该文件夹应包含在my_package.
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 python\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my_package\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 data\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 stuff.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pyproject.toml\nRun Code Online (Sandbox Code Playgroud)\n我没有找到任何方法来配置诗歌,它data以正确的方式包含附加文件夹。
这是我的pyproject.toml
[tool.poetry]\nname = "my-package"\nversion = "2.10.0" \n\npackages = [\n { include = "my_package", from = "src/python" }\n]\n\n# This does not work! It puts the `data` folder into site-packages/data instead of site-packages/my_package/data\ninclude = [\n { path = "data", format = ["sdist", "wheel"] }\n]\n\n[build-system]\nrequires = ["poetry-core>=1.0.0"]\nbuild-backend = "poetry.core.masonry.api"\nRun Code Online (Sandbox Code Playgroud)\n我还使用预构建脚本找到了以下解决方案:\n https://github.com/python-poetry/poetry/issues/5539#issuecomment-1126818974 …
我使用setuptools'tests_require'来指定测试我的包所需的依赖项.
tests_require - http://pythonhosted.org/distribute/setuptools.html#new-and-changed-setup-keywords
Run Code Online (Sandbox Code Playgroud)
我已经开始使用滚轮包装了
http://wheel.readthedocs.org/en/latest/
Run Code Online (Sandbox Code Playgroud)
并为我当前的包及其所有依赖项构建wheel的目录.
pip wheel --wheel-dir=/tmp/wheelhouse .
Run Code Online (Sandbox Code Playgroud)
不过,我想也建立车轮在任何软件包tests_require列出的所有软件包.
显然,我可以在重复的test_requirements.txt文件中明确指定需求:
pip wheel --wheel-dir=/mnt/wheelhouse -r test-requirements.txt
Run Code Online (Sandbox Code Playgroud)
但后来我在测试需求文件和tests_require列表中复制了依赖项.我可以将测试需求文件读入tests_require,但这似乎是滥用需求文件,据我所知,这些文件旨在让用户能够控制指定已知可以协同工作的软件包的环境.
Requirements files - http://www.pip-installer.org/en/latest/cookbook.html
Run Code Online (Sandbox Code Playgroud) 我们正在使用一个内部托管的PyPI服务器(devpi-server),以便我们可以托管大型软件包的二进制轮子,这些软件包需要很长时间才能从scipy,matplotlib等源代码安装.安装这些软件包时,pip install scipy工作完美,绝对使用我们的轮子创造了.但是,使用任何内部开发的python包,这些包依赖于其中一个包并运行会python setup.py install|develop|test|whatever导致以下错误:
No local packages or download links found for scipy
Traceback (most recent call last):
File "setup.py", line 136, in <module>
'develop': DevelopCommand
File "/usr/local/lib/python2.7/distutils/core.py", line 112, in setup
_setup_distribution = dist = klass(attrs)
File "/users/me/virtualenvs/devpi-test/lib/python2.7/site-packages/setuptools/dist.py", line 239, in __init__
self.fetch_build_eggs(attrs.pop('setup_requires'))
File "/users/me/virtualenvs/devpi-test/lib/python2.7/site-packages/setuptools/dist.py", line 263, in fetch_build_eggs
parse_requirements(requires), installer=self.fetch_build_egg
File "/users/me/virtualenvs/devpi-test/lib/python2.7/site-packages/pkg_resources.py", line 564, in resolve
dist = best[req.key] = env.best_match(req, self, installer)
File "/users/me/virtualenvs/devpi-test/lib/python2.7/site-packages/pkg_resources.py", line 802, in best_match
return self.obtain(req, …Run Code Online (Sandbox Code Playgroud) $ python3 -m venv ~/venvs/vtest
$ source ~/venvs/vtest/bin/activate
(vtest) $ pip install numpy
Collecting numpy
Cache entry deserialization failed, entry ignored
Using cached https://files.pythonhosted.org/packages/d2/ab/43e678759326f728de861edbef34b8e2ad1b1490505f20e0d1f0716c3bf4/numpy-1.17.4-cp36-cp36m-manylinux1_x86_64.whl
Installing collected packages: numpy
Successfully installed numpy-1.17.4
(vtest) $
Run Code Online (Sandbox Code Playgroud)
我正在寻找这个轮子numpy-1.17.4-cp36-cp36m-manylinux1_x86_64.whl被缓存在哪里?
$ sudo updatedb
$ locate numpy-1.17.4
$ # nada ;(
Run Code Online (Sandbox Code Playgroud)
文档https://pip.pypa.io/en/stable/reference/pip_install/#wheel-cache告诉我们Pip will read from the subdirectory wheels within the pip cache directory and use any packages found there.
$ pip --version
pip 9.0.1 from ~/venvs/vtest/lib/python3.6/site-packages (python 3.6)
$
Run Code Online (Sandbox Code Playgroud)
要回答 Hamza Khurshid …
我习惯于使用Pip预先下载软件包,然后将它们复制到目标机器进行部署.随着新推出的Python Wheels,我被迫"pip ... --no-use-wheel",因为一些下载的软件包是特定于平台的(我正在开发OSX并部署到Debian)并且不会安装在目标机器上.有没有办法为目标平台(或平台无关)下载车轮?
如何在 python 轮中只包含 *.pyc 文件?创建鸡蛋时,过去可以运行
python setup.py bdist_egg --exclude-source-files
鉴于鸡蛋已被轮子取代,我将如何重现类似的结果?
我的项目树结构
\n\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 example.gif\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 funmotd\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 config.json\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 quotes_db.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 LICENSE\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup.py\n\nRun Code Online (Sandbox Code Playgroud)\n\nsetup.py(为了减少代码量,删除了一些代码)
import sys\nimport os\nimport setuptools\nfrom setuptools.command.install import install\n\nclass PostInstall(install):\n def run(self):\n mode = 0o666\n bashrc_file = os.path.join(os.path.expanduser(\'~\'), ".bashrc")\n install.run(self)\n # Added CLI to .bashrc\n # Change "config.json" file permission\n\n\nsetuptools.setup(\n ...\n entry_points={\'console_scripts\': [\'funmotd = funmotd:main\']},\n package_dir={\'funmotd\': \'funmotd/\'},\n package_data={\'funmotd\': [\'config.json\'], },\n include_package_data=True,\n python_requires=">=3.4",\n cmdclass={\'install\': PostInstall, },\n ... \n)\n\nRun Code Online (Sandbox Code Playgroud)\n\nPostInstall当我运行时,执行得很好python3 setup.py install。因此,上传到Pypi如下(来自此文档)
$ python3 setup.py bdist_wheel\n# Created …Run Code Online (Sandbox Code Playgroud) 我对机器学习很陌生,当我尝试安装 numpy 时发生了这种情况,你们能帮我解决这个问题吗?我正在使用 python 3.10.0
错误:为 numpy 构建轮子失败 无法构建 numpy 错误:无法为 numpy 构建轮子,这是安装基于 pyproject.toml 的项目所必需的
我有一个简单的包,其中包含 C 扩展。我正在使用 Poetry 管理我的依赖关系和构建过程。
当我运行时poetry build,扩展被编译并包含在 .tar.gz 存档中,但不在 .whl 中,我不明白为什么。从 tar.gz 归档文件安装的 pip 按预期工作,但由于 Wheel 缺少 .so,pip 安装 Wheel 会导致软件包无法使用。
我已经从这里提升了构建机制:https ://github.com/python-poetry/poetry/issues/2740
pyproject.toml[tool.poetry]
name = "python_ctypes"
version = "0.1.0"
description = ""
authors = ["Me"]
include = [
{path = "_extensions/*.so", format = "wheel"}
]
[tool.poetry.dependencies]
python = "^3.9"
numpy = "^1.22.1"
[tool.poetry.dev-dependencies]
[tool.poetry.build]
generate-setup-file = false
script = "build.py"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
Run Code Online (Sandbox Code Playgroud)
build.py"""Poetry build script for python_ctypes"""
import os …Run Code Online (Sandbox Code Playgroud) python-wheel ×10
python ×7
pip ×4
setuptools ×3
pypi ×2
python-3.x ×2
apple-m1 ×1
devpi ×1
egg ×1
h5py ×1
macos ×1
python-3.10 ×1
version ×1