每当我安装新包(不使用该--skip-lock选项)时,pipenv 都会下载并(在非二进制依赖项的情况下)从头开始编译所有包,即使轮子已经缓存在~/.cache/pipenv. 这使得整个开发过程变慢,因为我有很多包需要从源代码编译。目前,我使用 pip 下载并编译我的包,用于pypi-server运行本地包服务器,并将我的 pipelinev 指向它(使用 [[source]])。但我想知道是否有更好的方法。
我想制作一个wheel二进制发行版,安装它,然后将其导入python。我的步骤是
python ./my_package/setup.py bdist_wheelpip install ./dist/*.whlpython -c"import my_package"这会导致错误:
ImportError: No module named 'my_package'
另外,当我这样做时pip list,my_package会列出。但是,当我运行时which my_packge,没有显示任何内容。
当我运行时,pip install ./my_package/一切都按预期进行。
如何正确构建和安装轮子?
python 版本 3.5 pip 版本 10.1 轮子版本 0.31.1
更新:
当我查看 my_package-1.0.0.dist-info 中的文件时,top_level.txt. 这是我运行的文件夹的名称
python ./my_package/setup.py bdist_wheel。我相信我的文件夹setup.py已损坏。
关于已接受答案的更新:
我接受了下面的答案。然而,我认为最好直接cd进入包目录。使用该标志时,按照下面的建议更改为不同的目录会导致意外行为-d,即保存轮子的目标目录。这将相对于 setup.py 文件中指定的目录。
我想从 Google Cloud Storage 存储桶安装 Python 包 (my-package-1.0.0.tar.gz)。
它适用于公开可用的存储桶(允许在 GCS 存储桶上进行公共读取访问?)或签名的 URL(https://cloud.google.com/storage/docs/access-control/signing-urls-with-helpers)。不过我想知道是否还有其他解决方案。
我想要一个私有的Python包,可以从用户友好的(或者我可以说开发人员友好的url)访问,例如https://storage.googleapis.com/pypi-packages/my-package/my-package -1.0.0.tar.gz。
我希望可以从其他 Google Cloud Platform 工具(例如 Dataflow、Cloud ML、Composer 或 GKE)访问此软件包
你认为这是可行的吗?
好吧...我花了很多时间试图解决这个问题。在 lambda 函数中包含 python 依赖项的最简单方法似乎是从 pyPI 下载 .whl 文件(https://aws.amazon.com/premiumsupport/knowledge-center/lambda-python-package-company/),解压缩,并包含在与 AWS 运行的版本兼容的 Linux 版本上编译的内容。
简单的问题,哪里都找不到答案。在 WINDOWS 机器上,我们如何使用 python 脚本解压缩 .whl 的内容以包含在 zip 文件中?我拼命寻找一步一步的方法,但什么也没有……非常沮丧。
我面临着一个非常慢的 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我正在尝试安装 Cairo (一个 2D 图形库)。我以前没有使用过任何东西.whl(至少没有手动使用过),并且我不明白收到的错误消息。我下载pycairo-1.18.2-cp38-cp38-win32.whl并尝试了pip3 install它,但出现以下错误:
ERROR: pycairo-1.18.2-cp38-cp38-win32.whl is not a supported wheel on this platform.
据我所知,我有正确版本的轮子,因为我的Python是
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:21:23) [MSC v.1916 32 bit (Intel)] on win32
我用来得到这个错误的命令是
pip3 install [full path to the .whl file in my Downloads]
有什么想法我可能在这里做错了吗?这是我下载轮子文件的地方。(还有其他选择,但我相信我得到了正确的选择。)
编辑1:
安装 Pycairo 需要 pkg-config 和 cairo 及其标头。
现在正在研究如何获得这些...
我正在使用 构建一个简单的轮包python setup.py bdist_wheel。
这将首先在目录中构建包./build。我如何自定义该位置?
我认为,对于该setup.py bdist命令似乎有一个参数--bdist-base,但对于 则不然bdist_wheel。
我创建了自己的 python 包jjnsegutils,并将其上传到 Pypi 网站。但是我成功安装后pip install jjnsegutils,仍然无法导入。错误显示:ModuleNotFoundError: No module named 'jjnsegutils'。
整个过程的详细信息如下。
\n我的包的结构是:
\njjnsequtils\n\xe2\x94\x9c\xe2\x94\x80 __init__.py\n\xe2\x94\x9c\xe2\x94\x80 myutil\n \xe2\x94\x9c\xe2\x94\x80 __init__.py\n \xe2\x94\x9c\xe2\x94\x80 myutil.py\n\xe2\x94\x9c\xe2\x94\x80 LICENSE\n\xe2\x94\x9c\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80 setup.py\n\nRun Code Online (Sandbox Code Playgroud)\n两个__init__.py文件都是空的。
在我的setup.py:
import setuptools\n\nwith open("README.md", "r") as fh:\n long_description = fh.read()\n\nsetuptools.setup(\n name="jjnsegutils", # Replace with your own username\n version="0.0.10",\n author="Jingnan",\n author_email="jiajingnan2222@gmail.com",\n description="A package of common utilities for Medical images segmentation and evaluation.",\n long_description=long_description,\n long_description_content_type="text/markdown",\n url="https://github.com/Ordgod/jjnsegutils",\n packages=setuptools.find_packages(),\n classifiers=[\n "Programming …Run Code Online (Sandbox Code Playgroud) 这曾经对我有用,但两天后我遇到了这个问题:
pip install sklearn-contrib-py-earth
Run Code Online (Sandbox Code Playgroud)
Collecting sklearn-contrib-py-earth
Using cached https://files.pythonhosted.org/packages/f8/c4/53a24835bafac880036446cc13839471a025b41de1436543f30d15d846c1/sklearn-contrib-py-earth-0.1.0.tar.gz
Requirement already satisfied: scipy>=0.16 in /usr/local/lib/python3.7/dist-packages (from sklearn-contrib-py-earth) (1.4.1)
Requirement already satisfied: scikit-learn>=0.16 in /usr/local/lib/python3.7/dist-packages (from sklearn-contrib-py-earth) (0.22.2.post1)
Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from sklearn-contrib-py-earth) (1.15.0)
Requirement already satisfied: numpy>=1.13.3 in /usr/local/lib/python3.7/dist-packages (from scipy>=0.16->sklearn-contrib-py-earth) (1.19.5)
Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from scikit-learn>=0.16->sklearn-contrib-py-earth) (1.0.1)
Building wheels for collected packages: sklearn-contrib-py-earth
Building wheel for sklearn-contrib-py-earth (setup.py) ... error
ERROR: Failed building wheel for sklearn-contrib-py-earth
Running setup.py clean for sklearn-contrib-py-earth
Failed to …Run Code Online (Sandbox Code Playgroud) 在尝试安装之前,是否可以以编程方式检查轮子 (whl) 是否与所选的 Python 安装兼容?
我正在制作一个自动包安装程序(我的Python项目工作所需的包),我只需要尝试安装兼容的pkg,所以如果出现错误,我知道它们仅来自兼容的模块,我应该看看是什么发生了(也不是来自不兼容的 pkg 的错误,我不在乎)。示例:我有 Python 3.5 和 3.7 的轮子,在 3.5 安装中,无法尝试安装 3.7 轮子。
我已经尝试过pkginfo(https://pypi.org/project/pkginfo/),但是在 上wheel.supported_platforms,它返回一个空数组,我无法对此做任何事情(带有“any”或“win32”的轮子平台部分中的名称,返回一个空数组,所以我似乎无法使用它)。
还尝试了 的输出python -m pip debug --verbose,但出现以下内容:
WARNING: This command is only meant for debugging. Do not use this with automation for parsing and getting these details, since the output and options of this command may change without no
tice.
Run Code Online (Sandbox Code Playgroud)
这使得该命令无法使用,即使它打印了“兼容标签”,我或多或少可以使用它来确定轮子是否受其名称支持。Python 数组中的“兼容标签”示例:
['cp39-cp39-win_amd64', 'cp39-abi3-win_amd64', 'cp39-none-win_amd64', 'cp38-abi3-win_amd64', 'cp37-abi3-win_amd64', 'cp36-abi3-win_amd64', 'cp35-abi3-win_amd64', 'cp34-abi3-win_amd64', 'cp
33-abi3-win_amd64', 'cp32-abi3-win_amd64', 'py39-none-win_amd64', …Run Code Online (Sandbox Code Playgroud) python-wheel ×10
pip ×6
python ×6
linux ×2
aws-lambda ×1
pipenv ×1
pycairo ×1
pypi ×1
python-2.7 ×1
python-3.x ×1
scikit-learn ×1
setuptools ×1