root@rebuild:~# python3.4
Python 3.4.0 (default, Nov 27 2014, 13:54:17)
[GCC 4.7.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/root', '/root/Python-3.4.0/Lib/site-packages/}', '/usr/local/python3.4/lib/python34.zip', '/usr/local/python3.4/lib/python3.4', '/usr/local/python3.4/lib/python3.4/plat-linux', '/usr/local/python3.4/lib/python3.4/lib-dynload', '/usr/local/python3.4/lib/python3.4/site-packages']
>>> import os
>>> os.system("ls /root/Python-3.4.0/Lib/site-packages/")
test.py README
0
>>> import test.py
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'test'
奇怪的是,为什么不能导入sys.path中的测试模块&#34; /root/Python-3.4.0/Lib/site-packages /"?
答案 0 :(得分:1)
import test.py
您导入了扩展名为test
的模块.py
。因此导入将尝试在包py
中找到名为test
的模块。
import test
是导入模块的正确语法。
例如:
>>> import string
>>> string
<module 'string' from 'C:\Python27\lib\string.pyc'>
这里string
是模块。但是,如果您尝试import string.py
,则会将string
视为package
并转而使用import
py
模块。
>>> import string.py
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named py
并且您还应该在site-packages
中修复sys.path
路径,该路径在无效路径的末尾带有'} '符号。
答案 1 :(得分:0)
有两个原因:
sys.path
搞砸了(后面是}
)。import test
,而不是import test.py
。请阅读Python教程的模块部分:https://docs.python.org/3/tutorial/modules.html