ImportError:Windows上没有模块命名的站点


101

我正在尝试首次安装Python。我从Python网站下载了以下安装程序: Python 2.7.1 Windows Installer(Windows二进制文件-不包括源代码)。然后,我运行安装程序,选择“所有用户”,一切都很好。我将Python安装到默认位置:

C:\Python27

接下来,要测试Python是否已正确安装,我导航到我的Python目录,并在Windows cmd提示符下运行了“ python”命令。它返回以下错误:

ImportError:没有名为站点的模块

当我执行“ python -v”时,我得到以下信息:

#installing zipimport hook
import zipimport # builtin

#ImportError: No module named site #installed zipimport钩子#clear 内置 ._
#clear sys.path #clear sys.argv
#clear sys.ps1 #clear sys.ps2
#clear sys.exitfunc #clear sys.exc_type
#clear sys.exc_value #clear sys.exc_traceback
#clear sys.last_type #clear sys.last_value
#clear sys.last_traceback #clear sys.path_hooks
#clear sys.path_importer_cache #clear sys.meta_path
#clear sys.flags #clear sys.float_info
#restore sys.stdin #恢复sys.stdout
#restore sys.stderr #cleanup
#cleanup [1 ] zipimport #cleanup [1]信号
#cleanup[1 ] exceptions #cleanup [1] _warnings
#cleanup sys 内置的
#cleanup ints: 6 unfreed ints cleanup #cleanup浮动

当我执行dir时,C:\Python27\Lib\site.py*我得到以下信息:

C:\ Users \ Mimminito> dir C:\ Python27 \ Lib \ site.py *
驱动器C中的卷没有标签。
卷序列号是DAB9-A863

C:\ Python27 \ Lib目录

13/11/2010 20:08 20,389 site.py
1文件20,389字节
0目录694,910,976字节免费

有任何想法吗?


假设您没有更改默认安装位置,那么计算机上是否存在文件C:/Python27/Lib/site.py?
Tim W.

是的,site.py位于该文件夹中
Mimminito

7
@Mimminito:我很好奇(温和)为什么你消失了9个月,而现在才接受我的回答,(很好)为什么你发现了根本的问题。
约翰·马钦

我现在遇到这个问题。我不知道为什么,我已经在互联网上搜寻解决方案。它总是说ImportError:无论我如何安装python以及放入PATH中的内容,都没有名为site的模块。我想知道python如何实际加载site.py。显然,这是一个相对/绝对路径问题。而且,如果我可以直接配置python的路径而无需在黑暗中求助于随机刺伤。
CMCDragonkai 2013年

3
我有这个问题。我是从Cygwin调用的,而Cygwin具有类似Unix的路径PYTHONPATH。我将其转换为Windows风格的路径,export PYTHONPATH=$(cygpath -w $PYTHONPATH)并且效果很好。添加此注释可帮助可能遇到此问题的其他人。
罗伯特2014年

Answers:


145

我已经为自己研究了近一天的问题,终于取得了突破。试试这个:

  1. 设置PYTHONPATH / PYTHONHOME变量

    右键单击开始菜单中的“ 计算机”图标,然后转到属性。在左侧标签上,转到高级系统设置。在出现的窗口中,转到“ 高级”选项卡,然后在底部单击“ 环境变量”。单击用户变量列表,然后开始键入Python,然后重复“ 系统变量”,以确保您没有为PYTHONPATH或PYTHONHOME设置错误的变量。接下来,添加新变量(我也可以在System中而不是User中使用,尽管它也可能对User也适用):PYTHONPATH,设置为C:\ Python27 \ Lib。,设置为C:\ Python27PYTHONHOME

希望这可以帮助!


7
而且,您还需要在路径变量后附加%PYTHONHOME%才能使其正常工作。
Rishi

7
啊哈!这应该是问题的答案。对我来说,这是一个设置为无效路径的PYTHONHOME变量...删除了它,现在它起作用了!看来Steam的Alien Swarm mod补充了这一点。
Timotei 2012年

2
PYTHONPATH/PYTHONHOMEPython定位文件夹中site.py放置的模块时,无需设置任何变量Lib。此答案充其量是一种解决方法。
Piotr Dobrogost 2013年

3
环境变量是一场噩梦。我责怪Linux。
Damien 2013年

1
确保您没有同时安装两个Python版本。例如,如果Python 2.7在%PATH%中首先出现,并且为PYTHONHOME设置了Python3,这可能会使解释器混乱。
LM.Croisez '16

41

快速解决方案:设置PYTHONHOME和PYTHONPATH并在PATH上包含PYTHONHOME

例如,如果您安装到c:\ Python27

set PYTHONHOME=c:\Python27
set PYTHONPATH=c:\Python27\Lib
set PATH=%PYTHONHOME%;%PATH%

确保您在PYTHON *变量上没有结尾的'\',这似乎会使它破坏。


3
如果在Windows 10上,现在是:setx PYTHONHOME“ C:\ Python27” setx PYTHONPATH“ C:\ Python27 \ Lib” setx PATH“%PYTHONHOME%;%PATH%”
Vesanto

这在Windows 7和Python 3.6上对我来说很好用
渴求知识

12

在安装Windows Python和Cygwin Python并尝试从Cygwin运行Cygwin Python之后,出现了这个问题。我export通过PYTHONHOME = / usr /和PYTHONPATH = / usr / lib / python2.7 解决了它


12

确保正确设置了PYTHONHOME环境变量。如果PYTHONHOME指向无效的位置或您要运行的其他Python安装,您将收到此错误。

试试这个:

C:\>set PYTHONHOME=C:\Python27
C:\>python

setx PYTHONHOME C:\Python27

将其永久设置为后续命令提示符


6
使用setx PYTHONHOME C:\Python27永久后续命令设置提示这一点。否则,您必须每次都使用set命令。
伊恩·塞缪尔·麦克莱恩

5

找到site.py并将其路径添加到PYTHONPATH中。这样可以解决您的问题。


4

您是否要从Cygwin运行Windows Python?我有同样的问题。Cygwin中的Python无法导入站点。Cmd中的Python可以工作。

看起来您需要确保通过以下方式运行PYTHONHOME和PYTHONPATH cygwin -aw来使它们成为Windows路径。另外,python似乎使用了一些不正确的路径。

我想我需要通过cygwin安装python才能正常工作。


1
嗨,这对您来说可能仍然不是问题,但是如果其他人遇到此问题,请参阅我对主要问题的评论。基本上,您需要使用转换PYTHONPATH为Windows样式的路径export PYTHONPATH=$(cygpath -w $PYTHONPATH)
罗伯特2014年

4

对于Windows 10(按照@slckin回答),可以通过以下命令在命令行中进行设置:

setx PYTHONHOME "C:\Python27"
setx PYTHONPATH "C:\Python27\Lib"
setx PATH "%PYTHONHOME%;%PATH%"

6
永远不会使用,setx PATH "%PYTHONHOME%;%PATH%"因为它PATH用用户和系统路径的总和来设置用户。没关系的本地安装(使用set),但不使用setx
让·弗朗索瓦·法布尔

4

就我而言,问题是另一个site.py文件,由于PATH设置,它比Python \ Lib中的文件更早被解决。

环境:Windows 10 Pro,Python27。

我的桌面安装了pgAdmin,它具有文件C:\ Program Files(x86)\ pgAdmin \ venv \ Lib \ site.py。由于PATH环境变量比Python更早拥有pdAdmin的目录(显然这是一个坏主意),因此首先找到pgAdmin的site.py。

解决该问题所需要做的就是在PATH中将pgAdmin的主页移到比Python晚的地方


3

对我而言,发生这种情况是因为我安装了2个版本的python-python 27和python 3.3。这两个文件夹都设置了路径变量,因此存在此问题。为了解决这个问题,我将python27移到了temp文件夹,因为我对python 3.3没问题。因此,请检查诸如PATH,PYTHONHOME之类的环境变量,因为这可能是一个问题。谢谢。


1

如果有人发现非管理员用户仍无法使用它:

错误示例:

ImportError: No module named iso8601

您需要为easy_install设置“ --always-unzip”选项:

easy_install --always-unzip python-keystoneclient

它将解压缩您的egg文件,并允许导入找到em。


1

ImportError: No module named site在安装python 2.7.11时遇到了同样的问题

最初我有Python2.5,PYTHONHOME路径设置为Python2.5。我将其重命名为,C:\Python27\并解决了该问题。


0

您可以尝试“ 开源Active Python设置”,它是Windows的出色Python安装程序。您只需要卸载并安装版本即可。


7
python.org安装程序很好
David Heffernan

我在笔记本电脑上安装了Active Python,并且安装得很好。不过,这并不在我的电脑上工作,我仍然得到同样的错误
Mimminito

0

我对slckin的答案投了赞成票。我的问题是我考虑周全,并在路径周围加了双引号。我删除了所有三个变量的双引号:PYTHONHOME,PYTHONPATH和PATH。请注意,该文件位于cmd或bat文件中,用于设置其他工具的环境。但是,双引号可能在图标设置中很有用。打字

揭示了报价在路径中的位置而不是按预期下降。我还缩短了PATH,使其长度少于256个字符。


-1

我有一个非常依赖Python的应用程序,并随着新版本的发布保持python 2.7.x的最新性。直到2.7.11,当我遇到相同的No module named site错误时,一切都很好。我已将PYTHONHOME设置为c:\Python27且正在运行。但是仍然有一个谜,为什么在以前的版本中不需要它,现在需要这样做。而且,如果需要,安装程序为什么不设置此变量?


-1

我有同样的问题。我的解决方案是修复Python安装。(这是一个新安装,因此我没想到会出现问题,但现在已解决。)

要修复(Windows 7):

  1. 转到控制面板->程序->程序和功能
  2. 单击已安装的Python版本,然后按“卸载/更改”。
  3. 请按照说明修复安装。

-3

从PyYAML主页安装yaml:http ://www.pyyaml.org/wiki/PyYAML

选择适合您的OS和Python的版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.