没有名为' json'安装simplejson之后

时间:2016-05-13 15:09:32

标签: python json pip simplejson

我在Ubuntu 14.04工作,我的机器上有多个版本的Python(包括python2.7和python3.4)。几天前,我在我的系统上安装了simplejson。我不记得我是怎么做到的,但我想它必须与pip install simplejson类似。但是,当我尝试安装任何python包时,现在出现了一个奇怪的问题。例如,刚才我尝试使用Tkinter安装sudo pip3.4 install Tkinter,它会抛出以下错误:

Traceback (most recent call last):
  File "/usr/local/bin/pip3.4", line 9, in <module>
    load_entry_point('pip==1.5.4', 'console_scripts', 'pip3.4')()
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 351, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2363, in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2088, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "/usr/lib/python3/dist-packages/pip/__init__.py", line 61, in <module>
    from pip.vcs import git, mercurial, subversion, bazaar  # noqa
  File "/usr/lib/python3/dist-packages/pip/vcs/subversion.py", line 4, in <module>
    from pip.index import Link
  File "/usr/lib/python3/dist-packages/pip/index.py", line 15, in <module>
    from pip.wheel import Wheel, wheel_ext
  File "/usr/lib/python3/dist-packages/pip/wheel.py", line 25, in <module>
    from distlib.scripts import ScriptMaker
  File "/usr/share/python-wheels/distlib-0.1.8-py2.py3-none-any.whl/distlib/scripts.py", line 15, in <module>
  File "/usr/share/python-wheels/distlib-0.1.8-py2.py3-none-any.whl/distlib/resources.py", line 20, in <module>
  File "/usr/share/python-wheels/distlib-0.1.8-py2.py3-none-any.whl/distlib/util.py", line 11, in <module>
ImportError: No module named 'json'

如果错误告诉我在其中一个文件中,我有时可以解决这个问题:

import json

我只是转换为

import simplejson as json

我尝试卸载simplejson:

sudo pip uninstall simplejson

但它给了我同样的错误:找不到json。

任何人都可以帮我解决这个问题,以便能够安装python软件包吗?提前致谢。

2 个答案:

答案 0 :(得分:4)

注意:我没有明确的答案,但会提供一系列您可以尝试的步骤:

首先看看你是否可以从通常的python解释器导入json:

import json
print(json.__file__) #this would be important to know if it works

如果确实有效(以及评论json.__file__是什么),那么您会尝试use pip from the interpreter.

如果你不能正常导入json:

这并不奇怪,我没想到pip会在模块的非标准位置寻找。您需要弄清楚json包应该在计算机上的位置,您可以通过从标准库导入另一个模块并查看它__file__来完成此操作:

>>> import fractions
>>> fractions.__file__
'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/fractions.py'

这对您来说显然会有所不同,但我希望在与json相同的文件夹中有一个fractions.py文件夹

如果您无法导入fractionsqueuedatetime等。

如果您无法从标准库导入任何内容,您可能只想重新安装python。

如果json文件夹在那里并且包含__init__.py

使用文件浏览器的重命名功能确保没有奇怪的特殊字符,但除此之外我不确定,如果你可以导入fractions.py而不是来自同一文件夹的包意味着你的python版本的导入机制有一些非常错误。

如果json文件夹不是标准库的其余部分

你的python发行版可能有一个与我期望的结构不同的结构,至少看起来不会受到伤害。

您可以在各种python文件using the find command中搜索json文件夹,但不确定它是如何工作的,只是尝试另一件事。如果您确实找到了__init__.pyencode.pydecode.pyscanner.pytool.py(至少那些是我的版本中的那些),那么我可能想知道它是如何到达那里的,但也许只是将其移动到与标准库的其余部分相同的文件夹中。

如果找不到json包,或者找不到它并且已损坏

那么你需要更换它!不要担心,这不是太难,只需抓住source release of python from the site并从中提取json包,一旦它被解压缩,json文件夹应该在{{1文件夹。只需将其复制/移动到标准库的其余部分,您就可以开始使用了!

我希望这可以帮助你调试正在发生的事情,这涵盖了我能想象到的所有场景,我会对哪一个修复你的问题感兴趣(或者你能够弄清楚什么,所以我可以想出更多选项)

答案 1 :(得分:-1)

我猜您使用pip install simplejson安装它以从PyPI下载或使用apt-get install python-simplejson从ubuntu存储库下载。

如果你使用上面的任何命令,你可能会为Python2下载该文件库,但它不适用于Python3(pip3.4将使用它)。您可以尝试这些命令并帮助自己调试吗?

$ python -c "import simplejson"

$ python3.4 -c "import simplejson"

这会告诉你上次安装了哪个版本的python simplejson(我在python2中的猜测)。如果第二个命令与ImportError错误,请尝试:

$ pip3.4 install simplejson

然后安装您的库。