首先让我告诉你,我是一个新用户,我刚开始在大学里学习Python,所以我很抱歉,如果这个问题在其他主题中被回答,但我搜索了,我似乎无法找到它。
我从老师那里收到了一个文件work.pyc
,他说我必须使用命令from work import *
在我的Wing IDE中导入它,问题是我不知道将文件放到哪里导入它。
它只是说ImportError: No module named work
。
谢谢
答案 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:
你获得的*.pyc
是compiled 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文件的文件系统上的路径