【问题标题】:Python - Where to paste files to importPython - 在哪里粘贴要导入的文件
【发布时间】:2012-10-29 18:09:58
【问题描述】:

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

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

它只是说ImportError: No module named work

谢谢

【问题讨论】:

  • 我有点担心你的老师是 1) 给你一个 .pyc 文件和 2) 没有提供足够的关于如何导入它的说明!
  • @JonClements 所说的 + "3) 是在建议 import *"

标签: python import importerror


【解决方案1】:

对此有多种选择。 最直接的就是把它和要导入的py文件放在同一个文件夹里。

您可能还想看看this

【讨论】:

  • 快速简单的回答。完成!非常感谢,我希望我也可以开始帮助人们。谢谢你
【解决方案2】:

如果您使用的是 Python 解释器(让您直接将 Python 代码输入其中并执行的解释器),您必须这样做:

sys.path.append('newpath')

from work import *

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

【讨论】:

    【解决方案3】:

    如果您正在处理文件夹 project 中名为 main.py 的脚本,一种选择是将其放置在 project/work.pyc

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

    Python 解析导入语句的方式如下(简化):

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

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

    sys.path 通常包含来自标准库的模块的路径、附加安装的包(通常在站点包中)和可能的其他第 3 方模块。

    当您执行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 *,你就不能这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 2013-06-07
      • 2019-12-30
      • 2023-02-01
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      相关资源
      最近更新 更多