Python脚本在命令行正常,但在Eclipse和PyDev中出现文件未找到错误

1 投票
2 回答
3235 浏览
提问于 2025-04-16 19:28

文件夹结构:

src
+ root
+ nested
  ++ myprogram.py
  ++ helper.py
  ++ res
    +++ excluded.txt
    +++ whitelist.txt

案例 1 - 在 Eclipse 中创建一个 PyDev 项目。作为 PyDev 配置运行。指定主模块和其他所有内容。主模块是 myprogram.py。当我在 Eclipse 中运行时,出现错误 - IOError: [Errno 2] 没有这样的文件或目录: '.\res\excluded.txt' excluded.txt 在 myprogram.py 中被指定为 => excluded_words_file = r'.\res\excluded.txt'

案例 2 - 使用命令行运行 myprogram.py 脚本。运行得非常顺利。

唯一的区别是 Eclipse 还在这个项目中使用 SVN 源代码控制。所以我尝试在断开与仓库的连接后再运行。但问题依旧。

那么我在 Eclipse 设置中可能做错了什么呢?谢谢。

2 个回答

0

听起来像是路径的问题。请把你运行后看到的结果发出来。

import sys
print sys.path

发帖者说,sys.path 输出了以下内容:

C:\Documents and Settings\sumod_pawgi\workspace\SWCTester\src\root\nested 
C:\eclipse\plugins\org.python.pydev.debug_2.1.0.2011052613\pysrc 
C:\Documents and Settings\sumod_pawgi\workspace\SWCTester\src 
C:\Python25\Lib\site-packages 
C:\Python25 
C:\Python25\DLLs 
C:\Python25\lib 
C:\Python25\lib\lib-tk 
C:\Python25\lib\plat-win 
C:\WINDOWS\system32\python25.zip 
C:\eclipse\plugins\org.python.pydev_2.0.0.2011040403\PySrc 
C:\Python25\Lib\site-packages\py2exe

根据我看到的情况,我发现一个问题:你的 res 文件夹不在你的路径中。这个问题可以通过两种方式解决:

  1. 执行 sys.path.append('path/to/res/directory')
  2. 在 PyDev 的运行配置中添加 res 文件夹到路径中

或者

  1. 在 Eclipse 中右键点击 *.py 文件,选择 'Run as' -> 'Run Configurations...'
  2. 在右侧,选择 'Arguments' 标签。
  3. 检查 'Working Directory' 部分,确认选中的工作目录(所有需要的文件都应该在这里 - 如果没有,点击 'workspace' 按钮并从工作区选择文件夹)
0

快速调试的方法是:

import os
print os.getcwd()

这样可以让你看到,Eclipse并不是从你在命令行中输入的那个目录运行的。

在Python模块中,右键点击 -> 属性 -> 运行/调试设置 -> Python运行 -> 参数,你可以更改工作目录。

我个人认为这样做不是个好主意,最好是修改程序,让它从一个绝对路径读取,这样无论程序部署在哪里都能正常工作。

撰写回答