【问题标题】:Program runs in Pycharm but not in terminal程序在 Pycharm 中运行,但不在终端中
【发布时间】:2017-10-24 10:05:47
【问题描述】:

我经常使用终端运行程序,因为这样可以将速度提高 3 倍。我最近从 2016 版 Pycharm 升级到 2017 版,现在我无法再在终端中运行该程序。终端不喜欢的行是:

wb4 = load_workbook('../temp_proof.xlsx')

同样,这条线在 Pycharm 上运行良好。我去终端并确保它在正确的目录中,当我按下 ls 时,该文件在目录中。

Here is the terminal error message:
 File "/Users/bobsmith/PycharmProjects/inference_engine2/inference2/Proofs/prove.py", line 36, in <module>
    wb4 = load_workbook('../temp_proof.xlsx')

  File "/Library/Python/2.7/site-packages/openpyxl/reader/excel.py", line 151, in load_workbook
    archive = _validate_archive(filename)

  File "/Library/Python/2.7/site-packages/openpyxl/reader/excel.py", line 115, in _validate_archive
    archive = ZipFile(filename, 'r', ZIP_DEFLATED)

  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/zipfile.py", line 756, in __init__
    self.fp = open(file, modeDict[mode])
IOError: [Errno 2] No such file or directory: '../temp_proof.xlsx'

【问题讨论】:

  • 显然Pycharm和console中使用的环境设置不同;再次检查两者,如果在检查项目环境的 pycharm 端之前它正在工作 - 可能会注意到一些异常。从 2016 年升级到 2017 年时,我也遇到了问题 - 他们在更新过程中有一些错误;另一个解决方案 - 有下一个 2017 升级 - 安装它,如果你仍然有 2016 conf 使用它。
  • 问题出在运行python文件的位置,尝试将完整路径传递给python程序中的文件,或者将文件保存在与python文件相同的目录中,然后调用程序
  • Drako,我不知道你的设置是什么意思。终端不应该使用 Pycharm 所做的所有设置吗? Exprator,我尝试了您的解决方案,但它不起作用,但感谢您的帮助。
  • 如果在命令行中(在您尝试运行 python 的终端中,它失败了)您键入:ls ../temp_proof.xlsx,会发生什么?如果它失败(我认为它应该失败),你在“错误”文件夹中。打开 PyCharm 的菜单:Run -> Edit Configurations...,选择您自己的(如果有更多)并检查 Working directory。这也是您在终端中应该拥有的路径。当然,真正的解决方案是不在代码中使用当前目录的相对路径。

标签: python python-2.7 terminal pycharm


【解决方案1】:

由于某些原因,我不得不在用户前面加上一个斜杠,如下所示:

wb4 = load_workbook('/Users/bobsmith/PycharmProjects/inference_engine2/inference2/temp_proof.xlsx')

我以为我以前尝试过,但这次成功了。也可能是我必须重新配置我所做的 Pycharm 工作目录。所以我不确定真正的原因是什么。

【讨论】:

    【解决方案2】:

    它似乎从 temp_proof.xlsx 文件位置获取 abs 路径。 按照以下步骤执行此操作

    1. 转到文件夹路径 temp_proof.xlsx
    2. 从该位置打开python解释器并找到该位置的abs路径,即python 导入操作系统 locpath=os.getcwd()
    3. 使用 locpath 值访问 temp_proof.xlsx 文件 即filePath=os.path.join(locapth,'temp_proof.xlsx')
    4. 您可以使用的文件路径 wb4 = load_workbook(filePath)

    这会起作用

    【讨论】:

      猜你喜欢
      • 2021-09-12
      • 2013-11-26
      • 2021-07-01
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 2019-05-08
      • 2022-11-25
      • 2013-01-15
      相关资源
      最近更新 更多