Python/IPython ImportError: no module named site

26

我当前在我的Linux系统(ubuntu 12.04)上成功运行了Python 2.7.3ipython 1.2,但我尝试安装需要用于课程的更新版本的matplotlab

在终端中运行以下代码后:

user$ sudo easy_install -U distribute
user$ export PYTHONHOME=/usr/lib/python2.7/

现在每次我尝试运行pythonipython时都会收到错误消息。

ImportError: no module named site

我该如何反转/修复这个问题??我很迷茫。我查看了其他类似的问题,但没有人使用Linux,我不确定该怎么做。


relevant https://dev59.com/j2035IYBdhLWcg3wJccw - Chris_Rands
3个回答

26

尝试取消设置Python路径...

在Linux/Mac中,您可以使用以下命令:

unset PYTHONPATH
unset PYTHONHOME

1
在使用cygwin安装Python后,我遇到了以下问题。Windows程序安装了旧版本的Python,并将其放入了PYHONHOME变量中。一旦按照上述方法取消设置,cygwin内的Python就能够正常运行。 - johnm
完美的答案! - Elliot Gorokhovsky
在RHEL 7工作过。 - caot

18

PYTHONHOME

改变标准 Python 库的位置。默认情况下,库在 prefix/lib/pythonversion 和 exec_prefix/lib/pythonversion 中搜索, 其中 prefix 和 exec_prefix 是安装相关目录,两者默认都是 /usr/local。

当 PYTHONHOME 设置为单个目录时,它的值将替换 prefix 和 exec_prefix。要为它们指定不同的值,请将 PYTHONHOME 设置为 prefix:exec_prefix。

尝试清理您的 PYTHONHOME

user$ export PYTHONHOME=

关于安装 matplotlib,我建议按照以下步骤进行:

sudo apt-get install python-matplotlib

(详情请见此处


是的!成功了,非常感谢!使用apt-get install安装的matplotlib版本不是最新的版本...我尝试使用sudo pip install --upgrade matplotlib,但出现了"Command python setup.py egg_info failed with error code 1"的错误。也许我明天再试着解决它吧。 - geo_coder
2
嗨,不客气。如果这个答案对你有用,请接受它,这也会将你的问题从未回答的问题列表中移除。干杯! - E.Z.
3
执行命令 "export PYTHONHOME=/usr/" 为我解决了问题。 - bennos

10

您可以使用unset PYTHONHOME以使用系统默认设置,或使用export PYTHONHOME=/usr指定前缀,以便Python将在其后附加“/lib/python2.7”(或任何版本),从而定位其库。

如果您export PYTHONHOME=/usr/lib/python2.7,Python将在不存在的文件夹/usr/lib/python2.7/lib/python2.7中查找库。

如果您export PYTHONHOME=,则表示要告诉Python在当前工作目录中查找lib

jcomeau@aspire:~$ PYTHONHOME= strace -estat64 /usr/bin/python
stat64("lib/python2.7/", 0xff870ee0)    = -1 ENOENT (No such file or directory)
stat64("lib/python2.7", 0xff870ee0)     = -1 ENOENT (No such file or directory)
stat64("lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
stat64("lib/python2.7/", 0xff873efc)    = -1 ENOENT (No such file or directory)
stat64("lib/python2.7/plat-i386-linux-gnu", 0xff870ee0) = -1 ENOENT (No such file or directory)
stat64("lib/python2.7", 0xff870ee0)     = -1 ENOENT (No such file or directory)
stat64("lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
stat64("lib/python2.7/plat-i386-linux-gnu", 0xff873efc) = -1 ENOENT (No such file or directory)
stat64("lib/python2.7/lib-tk", 0xff870ee0) = -1 ENOENT (No such file or directory)
stat64("lib/python2.7", 0xff870ee0)     = -1 ENOENT (No such file or directory)
stat64("lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
stat64("lib/python2.7/lib-tk", 0xff873efc) = -1 ENOENT (No such file or directory)
stat64("lib/python2.7/lib-old", 0xff870ee0) = -1 ENOENT (No such file or directory)
stat64("lib/python2.7", 0xff870ee0)     = -1 ENOENT (No such file or directory)
stat64("lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
stat64("lib/python2.7/lib-old", 0xff873efc) = -1 ENOENT (No such file or directory)
stat64("lib/python2.7/lib-dynload", 0xff870ee0) = -1 ENOENT (No such file or directory)
stat64("lib/python2.7", 0xff870ee0)     = -1 ENOENT (No such file or directory)
stat64("lib", {st_mode=S_IFDIR|0755, st_size=8192, ...}) = 0
stat64("lib/python2.7/lib-dynload", 0xff873efc) = -1 ENOENT (No such file or directory)
ImportError: No module named site

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接