奇怪的东西...... 我正在从不同的文件夹导入文件.. 并正在研究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
答案 0 :(得分:3)
在解释器中运行代码时,sys.path
的第一个条目是一个空字符串,表示当前目录。但是,当您从文件运行代码时,sys.path
的第一个条目是您运行该脚本的目录的完全限定路径。
这意味着当您更改解释器中的目录时,您始终可以从当前目录执行导入,但从文件运行时也是如此。
如果您希望始终能够从脚本中的当前目录导入,请将以下行添加到文件顶部:
import sys
sys.path.insert(0, '')
答案 1 :(得分:1)
如果您确实要更改模块搜索路径,请扩展sys.path
列表。不建议更改目录。