簡體   English   中英

python2.7模塊目錄無法識別子模塊

[英]python2.7 module dir not recognizing submodules

我有一個 python 模塊目錄,設置如下:

versions/__init__.py
versions/v1_0.py
versions/v2_0.py

__init__.py是空的,但每個v*.py文件都定義了一些函數。 然后,我嘗試使用from versions import *導入所有子模塊,但是當我使用dir()打印出所有加載的模塊時,它們未列出,並且我無法使用任何子模塊函數,例如v1_0.update()

我是否錯誤地設置了我的versions模塊?

這是一個最小的可重現示例:

下面是findmore命令的結果,顯示了文件結構以及每個 python 文件的文件內容。

$ find .
.
./versions
./versions/__init__.py
./versions/__init__.pyc
./versions/v1_0.pyc
./versions/v1_0.py
$ more versions/*.py
::::::::::::::
versions/__init__.py
::::::::::::::
::::::::::::::
versions/v1_0.py
::::::::::::::
def update():
  pass

使用此設置和我的密碼在. 我做了以下事情:

$ python2
Python 2.7.5 (default, Aug  4 2017, 00:39:18) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from versions import *
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> versions.v1_0.update
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'versions' is not defined
>>> from versions.v1_0 import update
>>> update
<function update at 0x10428c0>

此處的 python 文檔中我發現如果__all__未定義,則from module import *只會初始化module然后導入module明確定義的任何名稱。 所以在我的情況下,因為versions/__init__.py沒有明確定義v1_0它沒有被導入。

暫無
暫無

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

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