簡體   English   中英

如何在python中導入ab?

[英]How to import a.b in python?

我嘗試使用__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 xx解決它?

我應該使用__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)

您的代碼在不同級別上是錯誤的

  • 文件__init.py應該是__init__.py
  • 在python中,您需要使用其相對路徑訪問對象: import abc ,必須使用abcx訪問cx對象,除非您將import abc as c

要修復代碼,請使用:

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

請注意,如果將test.py作為模塊import python.test從上層目錄中的代碼from .lib import sam_libimport python.lib.sam_lib as sam_libfrom .lib import sam_lib將起作用,而不是在運行test.py時直。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM