0

我尝试使用__init__.py.

我的目录:

 sam@sam-M51Kr:~/code/python$ tree
 .
 |-- __init__.py
 |-- lib
 |   |-- __init.py
 |   |-- sam_lib.py
 |   `-- sam_lib.pyc
 `-- test.py

 1 directory, 5 files
 sam@sam-M51Kr:~/code/python$

__init__.py的都是空的。

我的lib/sam_lib.py

k='hello!'

我的test.py

import python.lib.sam_lib
print(sam_lib.k)

当我运行时:

 sam@sam-M51Kr:~/code/python$ python test.py 
 Traceback (most recent call last):
   File "test.py", line 1, in <module>
     import python.lib.sam_lib
 ImportError: No module named python.lib.sam_lib
 sam@sam-M51Kr:~/code/python$

如何用语法解决它import x.x

我应该使用__init.py__吗?

===============================

我修改lib/__init.pylib/__init__.py

我尝试修改test.py

 from . import lib.sam_lib as sam_lib
 print(sam_lib.k)

它会导致错误:

 sam@sam-M51Kr:~/code/python$ python test.py 
   File "test.py", line 1
     from . import lib.sam_lib as sam_lib
                      ^
 SyntaxError: invalid syntax
 sam@sam-M51Kr:~/code/python$

当我修改为:

 import lib.sam_lib as sam_lib
 print(sam_lib.k)
4

1 回答 1

4

您的代码在不同级别有错误

  • 该文件__init.py应该是__init__.py
  • 在python中,您需要使用其相对路径访问对象:当您这样做时import a.b.cc.x必须使用对象访问对象,a.b.c.x除非您使用import a.b.c as c

要修复代码,请使用:

import lib.sam_lib as sam_lib
print(sam_lib.k)

Note that import python.lib.sam_lib as sam_lib or from .lib import sam_libwould have worked if test.py is imported as a module as in import python.test from a code in the upper level directory, not when you run test.py directly.

于 2012-09-01T10:55:51.877 回答