【问题标题】:Python can't find modules with PYTHONPATH setPython 找不到设置了 PYTHONPATH 的模块
【发布时间】:2015-09-06 22:14:36
【问题描述】:

我对新的 python 2.7.10 完全感到困惑。

我已经从官方网站下载的 tar.xz 安装了 python 2.7.10。然后我将 /usr/local/bin/python2.7 与 /usr/bin/python2.7 和 /usr/bin/python 链接起来,但是当我尝试导入模块时,我得到 ImportError: No module named “模块名称”。例如:

python -c "import gtk"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named gtk

但是如果:

cd /usr/lib/python2.7/dist-packages/gtk-2.0/
python -c "import gtk"

我们得到:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "gtk/__init__.py", line 30, in <module>
    import gobject as _gobject
ImportError: No module named gobject

至此,gtk 模块导入成功。

让我们“cd ~”看看sys.path:

python -c "import sys, pprint; pprint.pprint(sys.path)"
['',
 '/usr/local/lib/python2.7/site-packages/setuptools-17.1.1-py2.7.egg',
 '/usr/local/lib/python2.7/site-packages/pip-7.1.0.dev0-py2.7.egg',
 '/usr/local/lib/python27.zip',
 '/usr/local/lib/python2.7',
 '/usr/local/lib/python2.7/plat-linux2',
 '/usr/local/lib/python2.7/lib-tk',
 '/usr/local/lib/python2.7/lib-old',
 '/usr/local/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/site-packages']

好的,没有/usr/lib/python2.7/dist-packages,让我们添加它: 导出PYTHONPATH=$PYTHONPATH:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7

现在:

python -c "import sys, pprint; pprint.pprint(sys.path)"
['',
 '/usr/local/lib/python2.7/site-packages/setuptools-17.1.1-py2.7.egg',
 '/usr/local/lib/python2.7/site-packages/pip-7.1.0.dev0-py2.7.egg',
 '/home/s-quark',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7',
 '/usr/local/lib/python27.zip',
 '/usr/local/lib/python2.7',
 '/usr/local/lib/python2.7/plat-linux2',
 '/usr/local/lib/python2.7/lib-tk',
 '/usr/local/lib/python2.7/lib-old',
 '/usr/local/lib/python2.7/lib-dynload',
 '/usr/local/lib/python2.7/site-packages']

但还是找不到模块:

python -c "import gtk"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named gtk

我必须做什么?

【问题讨论】:

  • 看来您在所有列表中都缺少gtk-2.0 路径,仅仅因为您拥有dist-packages 并不意味着您拥有子目录:) 无论如何,我建议您重新开始并使用一个打包管理器,用于处理 Python 和库的安装。
  • @ilciavo,是的,我有。 @Wolph,@ilciavo,我也有这个问题。当我尝试时:sudo pip install PyGTK 我得到:No matching distribution found for PyGTK 然后当我尝试在依赖项中使用 gtk 时:sudo pip install pygtk-shell 我得到:` import gtk ImportError: No module named gtk ------------ ---------------------------- 命令“python setup.py egg_info”在/tmp/pip-build-y3ju0c 中失败,错误代码为1 /pygtk-shell`
  • @NULL 看来您的系统中有不同的python 版本。 which -a python 之后你会得到什么?他们不建议使用sudo pip install 而是创建一个虚拟环境。之后使用python -m pip install 确保您使用虚拟环境。一般远离sudo
  • @NULL 此外,如果您安装新的 python 版本,请使用不同的别名来单独保留版本并像 alias pythonA='$HOME/anaconda/bin/python 中的 alias pythonA='$HOME/anaconda/bin/python 一样干净。然后你就可以用pythonA -m pip install 安装所有东西,避免弄乱你的系统。

标签: python import path pythonpath sys.path


【解决方案1】:

您似乎有两个 python 版本。

默认版本一般链接到:

/usr/bin/python 

which -a python 可以看出,您的本地版本位于内部:

/usr/local/bin/python 

这是链接到您的本地二进制文件

/usr/bin/python 

pip install 使用默认 python 安装包。这就是您无法从本地安装导入包的原因,即使包在您的$PYTHONPATH 中可见。

如果python -m pip install 没有在您的本地版本上安装所需的包,请尝试创建一个虚拟环境(不要使用sudo

万一一切都失败了或者你绝望了,安装一个干净的 Anaconda 并远离麻烦。

我希望这有效

【讨论】:

  • 再次感谢 :) Anaconda 完美运行!但是除了 anaconda 没有什么能帮到我(
猜你喜欢
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2016-12-03
  • 2019-07-18
  • 1970-01-01
  • 2016-07-23
  • 2016-12-18
相关资源
最近更新 更多