带有多个文件夹的Python导入问题

时间:2014-12-25 11:45:30

标签: python import

我一直在努力使用python导入......我喜欢这种语言,但导入机制让我发疯。我的编码时间用于调试导入无效的原因?!?!

只有我在努力奋斗吗?

这是我最近的问题:

文件夹结构(src文件夹):

 .:
total 16
drwxr-xr-x 1 xy None  0 Dec 22 14:33 private
drwxr-xr-x 1 xy None  0 Dec 22 14:36 public
-rw-r--r-- 1 xy None 22 Dec 22 14:54 __init__.py

./private:
total 16
drwxr-xr-x 1 xy None  0 Dec 22 14:51 models
drwxr-xr-x 1 xy None  0 Dec 22 15:52 utils
-rw-r--r-- 1 xy None 76 Dec 25 12:05 __init__.py

./private/models:
total 16
drwxr-xr-x 1 xy None  0 Dec 22 14:51 environment
-rw-r--r-- 1 xy None 28 Dec 25 12:04 __init__.py

./private/models/environment:
total 32
drwxr-xr-x 1 xy None  0 Dec 22 14:51 territories
-rw-r--r-- 1 xy None 47 Dec 22 17:08 __init__.py
-rw-r--r-- 1 xy None 88 Dec 22 18:02 ship.py

./private/models/environment/territories:
total 64
-rw-r--r-- 1 xy None 393 Dec 22 16:22 territory.py
-rw-r--r-- 1 xy None 115 Dec 22 16:26 own.py
-rw-r--r-- 1 xy None  69 Dec 22 18:07 __init__.py
-rw-r--r-- 1 xy None 408 Dec 25 12:25 location.py

./private/utils:
total 32
-rw-r--r-- 1 xy None  20 Dec 22 15:58 __init__.py
-rw-r--r-- 1 xy None 182 Dec 22 16:00 utils.py

./public:
total 0
-rw-r--r-- 1 xy None 0 Dec 22 14:36 index.py

我正在使用python 3.4。我的问题是,如何在location.py中导入private.models.environment.ship。

我试过这个:

sys.path.append(os.path.join(os.path.abspath(os.path.join(__file__)).split('src')[0], 'src'))
import private.models as models

但是我收到错误消息“没有这样的模块模型”......很烦人。

1 个答案:

答案 0 :(得分:0)

如果location.py只是一个模块(您不能将其用作主程序),则可以通过相对导入解决您的问题:https://www.python.org/dev/peps/pep-0328/

在location.py中你可以写

from .. import ship

就是这样!