1
我有如下所示(可視化使用tree)目錄樹:在Python從「子子目錄」導入模塊3
.
├── __init__.py
└── testsubdir
├── __init__.py
└── testsubsubdir
├── __init__.py
└── __init__.pyc
的在主目錄__init__.py
包含命令import testsubdir
testsubdir
中的__init__.py
包含import testsubsubdir
。我注意到的是,這部作品在Python 2.7,但不是在Python 3.5:
[email protected]:~/Documents/Scratch/testdir$ python __init__.py
[email protected]:~/Documents/Scratch/testdir$ python3 __init__.py
Traceback (most recent call last):
File "__init__.py", line 1, in <module>
import testsubdir
File "/home/kurt/Documents/Scratch/testdir/testsubdir/__init__.py", line 1, in <module>
import testsubsubdir
ImportError: No module named 'testsubsubdir'
我的工作「翻譯」一些源代碼在Python 2到Python 3包含類似於上述import語句。在Python 3中完成這項工作的最佳方式是什麼?
這是否對你的工作?我得到'ValueError:嘗試相對導入非包'的行'from。導入testsubdir'。 –
@KurtPeek我通過在包'testdir'中放置頂層'__init __。py'並執行'import testdir'來測試。 – Leon
@KurtPeek如果你想直接向python3提供頂級'__init __。py',那麼在'import testsubdir'中保留'import'語句。 – Leon