我认为自己是python中的中间用户,而且这是一个新用户。在Linux上测试IDLE(Python 3.2.3)中的代码。这是整个脚本:
Python 3.2.3 (default, Apr 10 2013, 05:29:11)
[GCC 4.6.3] on linux2
Type "copyright", "credits" or "license()" for more information.
==== No Subprocess ====
>>> from os import listdir, getcwd, chdir
>>> chdir('Documents/matrix')
>>> getcwd()
'/home/bradfordgp/Documents/matrix'
>>> listdir('.')
['__init__.py', 'vec.zip', 'hw1.pdf', 'politics_lab.pdf', 'submit_hw1.py', 'submit_politics_lab.py', 'test_vec.py', 'Week1', 'Week0', 'python_lab.py~', 'Week2', 'vec.pdf', '__pycache__', 'hw1.zip', 'politics_lab.zip', 'voting_record_dump109.txt', 'my_stories.txt~', 'hw1.py', 'politics_lab.py', 'submit_vec.py', 'vec.py']
>>> from vec import Vec
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
from vec import Vec
ImportError: No module named vec
>>>
我已导航到正确的目录,我从同一目录导入,并且vec.py存在。为什么不在本地目录中找到文件?从终端窗口命令行运行此脚本可以正常工作。
建议?
答案 0 :(得分:2)
使用此.. ..
import sys
sys.path.append("/home/bradfordgp/Documents/matrix")
import vec
答案 1 :(得分:2)
import sys
sys.path.append("/home/bradfordgp/Documents/matrix")
import vec
只需将位置添加到python将在导入时搜索的位置
,而不是更改到目录查看更多here
答案 2 :(得分:0)
在交互模式下,import
将尝试在os.chdir
之后从当前目录导入模块。但在非交互模式下,它将失败并仍然从上一个目录中搜索。您可以从this issue查看更多讨论。在非交互模式下,你最好做别人提到的事情。