【问题标题】:Trouble using custom code from a separate file使用来自单独文件的自定义代码时遇到问题
【发布时间】:2016-02-09 17:34:02
【问题描述】:

我正准备开始一份工作(在 C#.NET 中),其中有一些 Python 经验是一个加分项。一两年前我读了一些关于它的书,然后又拿起了另一本书(Dusty Phillips 的 Python 3 Object Oriented Programming)。我在第一个代码示例中,遇到了一个非常愚蠢的问题。

我在一个单独的文件 first_class.py 中创建了我的第一个类。它保存在我的 C:\Docs\Continuing Education\Object Oriented Python\Chapter 2 文件夹中:

class MyFirstClass:
    pass

然后他说“运行命令python -i first_class.py”。我打开了?Python 3.5 控制台? (如果这就是它的名字),然后把它放在那里。我不太期待它能够工作,因为它是从与文件所在的文件夹不同的文件夹中执行的。

我尝试使用带引号和不带引号的文件的完全限定位置再次执行该命令,但这些都不起作用。看到其他一些答案,我尝试了所有三个(没有文件夹,有和没有引号),但省略了 .py 扩展名,这不起作用。到目前为止,所有这些命令都给出了以下错误消息,错误指向单词“first_class”的结尾:

SyntaxError: 无效语法

由于我已经在 Python 程序中,所以我尝试省略命令的 python 部分,但这也不起作用。

接下来,我找到this answer 并将“当前目录”更改为我上面列出的文件夹。无论有无python 和/或.py,都一样。

我也尝试过使用import 函数。这不会给出任何错误,所以我认为它有效。我继续书中的下一条命令:

>>>a = MyFirstClass()

不幸的是,这给出了以下错误:

回溯(最近一次通话最后一次):

中的文件“”,第 1 行

NameError:名称“MyFirstClass”未定义

我确定我只是遗漏了一些简单得可笑的东西。如果这是重复的,请务必标记。

【问题讨论】:

  • 如果您导入了first_class,那么您可以访问first_class.MyFirstClass
  • 您需要从命令行界面运行命令。在 Windows 上是命令提示符。
  • @PeterWood 太棒了!这样可行!谢谢你。但是python -i first_class 是怎么回事?我很乐意使用from/import,但如果至少知道他给我的第一个命令的目标,我将不胜感激。
  • @Fishstick 我试过了,它告诉我 python 不是一个有效的命令。 (很抱歉忘记了那个)
  • @krillgar 您的路径变量中可能没有 python。有大量资源可用于在线编辑路径。

标签: python file python-3.x python-3.5


【解决方案1】:

当文本显示运行 python -i /path/to/file 时,它期望您从 shell 运行它,而不是从 python 控制台中运行。

-i 标志是一种将文件或文件列表传递给 python 的方法,python 将运行然后将您转储到交互式提示中。文件中的任何代码都将位于全局命名空间中,就好像您已将其键入到交互式控制台中一样。

打开一个 cmd shell(或 powershell)并运行:

python -i "C:\Docs\Continuing Education\Object Oriented Python\Chapter 2\first_class.py"

那么你应该可以打电话给你的班级

a = MyFirstClass()

【讨论】:

  • 当我这样做时,我收到错误 'python' is not recognized as an internal or external command, operable program or batch file. 我是否需要在 python 交互式控制台所在的文件夹中的 cmd 中运行它?
  • C:\python35 不得在您的系统路径中。您必须提供 python 解释器的完整路径。而不是python,使用C:\python35\python.exe,或者你安装python的任何地方。
  • 或者,您可以编辑系统 PATH 变量以包含 python.exe 所在的目录。
  • 好的,所以最好的办法是将cmd中的目录更改为python所在的位置,然后执行。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-28
  • 1970-01-01
  • 2016-04-12
  • 2022-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多