为什么不能在sys.path中导入模块?

时间:2014-12-14 14:22:27

标签: python

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 /"?

2 个答案:

答案 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