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.pyしますlib/__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.cオブジェクト c.xにアクセスする必要があります。a.b.c.ximport a.b.c as c

コードを修正するには、次を使用します。

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

test.py を直接実行した場合ではなく、上位ディレクトリのコードからのようにモジュールとしてインポートされた場合は、 import python.lib.sam_lib as sam_liborが機能することに注意してください。from .lib import sam_libimport python.test

于 2012-09-01T10:55:51.877 に答える