簡體   English   中英

如何從子目錄導入?

[英]How do I import from a subdirectory?

這是復雜項目中存在的問題的簡化。 在一個名為root_test的文件夾中,我有一個名為test的文件夾,其中包含tester.py 我(在test )還有一個modules目錄(空),其中包含一個lib目錄,該目錄包含logger.py 目錄結構如下。

|-root_test
|---test/
|-----tester.py
|-----__init__.py
|-----modules/
|-------__init__.py
|-------lib/
|---------__init__.py
|---------logger.py

或者,從root_test運行:

 $ ls
test

 $ ls test/
__init__.py  modules      tester.py

 $ ls test/modules/
__init__.py  lib

 $ ls test/modules/lib/
__init__.py  logger.py

tester.py如下:

#!/usr/bin/env python

import sys, os

# allow running without installing
sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), '..'))

import test.modules.lib.logger

但是當我嘗試從root_test目錄運行它時, root_test以下錯誤:

 $ python test/tester.py 
Traceback (most recent call last):
  File "test/tester.py", line 8, in <module>
    import test.modules.lib.logger
ImportError: cannot import name logger

這在我的其他筆記本電腦上不會發生,它們的$PYTHONPATH相同:

 $ echo $PYTHONPATH
/usr/local/lib/python2.7/dist-packages/:/usr/local/lib/python2.7/site-packages/:

解決的辦法是安裝一個名為tester的模塊。 即使我顯式運行python ~/test/tester.py ,它仍然會運行已安裝的模塊。 卸下該模塊可解決此問題。

暫無
暫無

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

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