有可能某些东西在python ide中有效但在脚本中没有

时间:2012-01-30 19:32:07

标签: python

奇怪的东西...... 我正在从不同的文件夹导入文件.. 并正在研究python ide ..

所以我的ide代码:

>>> import os
>>> os.chdir("..")
>>> os.chdir("lib")
>>> os.chdir("native")
>>> os.getcwd()
'/.../.../Programming/lib/native'
>>> from category import *

效果很好.. 但在我的python文件中完全相同:

import os
import sys
#get current working directory
cur_dir = os.getcwd()
#move up one level
os.chdir("..")
new_cur_dir = os.getcwd()
print new_cur_dir
#move down to native
try:
 os.chdir("lib")
 print os.getcwd()
except IOError as e:
    sys.exit("Exitting: 'lib' folder missing!!")

try:
os.chdir("native")
print os.getcwd()
from category import *
from pilottest import *
from datainstance import *
from similar import *
from collections import defaultdict
from item import *
from pilottest import *
from infernumber import *

except IOError as e:
          sys.exit("Exitting: 'native' folder missing!!")

错误:

/../../Programming
/../../Programming/lib
/../../Programminglib/native
Traceback (most recent call last):
 File "foo.py", line 25, in <module>
  from category import *
ImportError: No module named category

2 个答案:

答案 0 :(得分:3)

在解释器中运行代码时,sys.path的第一个条目是一个空字符串,表示当前目录。但是,当您从文件运行代码时,sys.path的第一个条目是您运行该脚本的目录的完全限定路径。

这意味着当您更改解释器中的目录时,您始终可以从当前目录执行导入,但从文件运行时也是如此。

如果您希望始终能够从脚本中的当前目录导入,请将以下行添加到文件顶部:

import sys
sys.path.insert(0, '')

答案 1 :(得分:1)

如果您确实要更改模块搜索路径,请扩展sys.path列表。不建议更改目录。