首页 > 解决方案 > setup.py 找不到预安装的依赖项

问题描述

我正在尝试安装我通过运行编写的包

 python setup.py install

在包目录中。我的文件夹结构如下:

package
-module
--__init__.py
--parent_class.py
--child_class.py
-setup.py

这里'-'表示文件夹级别,包是根目录。

运行安装时按预期工作,直到:

Installed c:\users\me\appdata\local\continuum\anaconda3\lib\site- 
packages\package-0.1-py3.7.egg
Processing dependencies for package==0.1
Searching for json
Reading https://pypi.org/simple/json/
Couldn't find index page for 'json' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading https://pypi.org/simple/
No local packages or working download links found for json
error: Could not find suitable distribution for Requirement.parse('json')

我不认为这是 json 包安装的问题,因为:

  1. 我知道我已经安装了它(我可以在我的环境中运行'import json')并且因为如果我删除它。
  2. 如果我从中删除“json”,install_requires=['pandas', 'numpy', 'datetime', 'os', 'copy', 'json']则只会返回相同的错误,这次是“copy”,然后是“os”包。

提前致谢

标签: python-3.xinstallation

解决方案


我相信json它是 Python 2 和 3 中的一个内置模块(例如,like open)。因此,它通常包含在所有 Python 发行版中(也就是说,任何拥有 Python 的人都可能也拥有该json模块)。

因此,您应该能够json从您的要求中省略(同时仍将其导入您的代码中)。由于json它是一个内置模块,因此您可以假设任何安装了 Python 的人也将拥有json.

我发现这个问题也与安装json模块有关。第二个答案指出,最小的 Python 安装(例如,python-minimal在 Ubuntu 中)可能不包括json. 您应该注意,链接的问题涉及 Python 2 而不是 3。

因此,如果用户json在他们的系统上缺少,他们应该能够通过他们系统的包管理器(在 Linux 中)安装它,而不是pip. 在 Windows 中,我假设所有 Python 安装都将包含内置模块(尽管我不确定)。无论如何,如果用户没有json安装,那么我认为由用户来安装它。

这同样适用于oscopydatetime。仅pandasnumpy需要包含在您的要求中。

您可以在此处找到内置模块列表(适用于 Python 3)。同样,此处列出的模块不是托管在 pypi 上的模块(因此不能通过pip install ...conda install ...等),但通常包含在所有 Python 发行版中。

顺便说一句:这是我在这里的第一个答案。如果我能改进它,请告诉我。


推荐阅读