Python - 将文件粘贴到导入的位置

时间:2012-10-29 18:09:59

标签: python import importerror

首先让我告诉你,我是一个新用户,我刚开始在大学里学习Python,所以我很抱歉,如果这个问题在其他主题中被回答,但我搜索了,我似乎无法找到它。

我从老师那里收到了一个文件work.pyc,他说我必须使用命令from work import *在我的Wing IDE中导入它,问题是我不知道将文件放到哪里导入它。

它只是说ImportError: No module named work

谢谢

3 个答案:

答案 0 :(得分:3)

有几种选择。 最直接的方法是将它放在与要导入它的py文件相同的文件夹中。

您可能还想查看this

答案 1 :(得分:2)

如果您正在处理main.py文件夹中名为project的脚本,则可以选择将其置于project/work.pyc

这将使模块可导入,因为它与您的代码位于同一工作目录中。

Python解析import语句的方式就像这样(简化):

您正在使用的Python解释器(例如,/usr/bin/python2.6,您的系统上可能有几个)具有搜索路径列表,用于查找可导入代码。此列表位于sys.path中,您可以通过启动解释器并将其打印出来来查看它:

>>> import sys
>>> from pprint import pprint
>>> pprint(sys.path)

sys.path通常包含标准库中的模块路径,其他已安装的软件包(通常位于网站包中)以及可能的其他第三方模块。

当您执行import foo之类的操作时,Python将首先查看脚本所在目录中是否存在名为foo.py的模块。如果没有,它将搜索sys.path并尝试从那里导入。

正如我所说,这种解释有点简化。有关module search path

的部分说明了详细信息

注1: 你获得的*.pyccompiled Python bytecode。这意味着它的内容是二进制的,它包含由Python虚拟机执行的指令,而不是您通常会处理的*.py中的源代码。

注2: 老师给你的建议from work import *是一个相当糟糕的建议。在交互式解释器中为测试目的执行此操作可能没问题,但您应该从不在实际代码中执行此操作。相反,你应该做from work import chop, hack

之类的事情

主要原因:

  • 命名空间污染。您可能会导入您不需要但仍会污染全局命名空间的内容。
  • 可读性即可。如果你曾经读过别人的代码并想知道foo来自哪里,只需向上滚动并查看导入,你就会看到它的确切位置。如果该人使用import *,则无法执行此操作。

答案 2 :(得分:2)

如果你正在使用python解释器(允许你直接输入python代码并执行它的那个),你必须这样做:

sys.path.append('newpath')

from work import *

其中 newpath 是包含work.pyc文件的文件系统上的路径