2016-01-21 45 views
0

我编写了一套简单的python3文件,用于在32位平台上模拟一小组mongodb功能。我启动了PyCharm,并放置了一个如下所示的目录:如何构建我的小python框架

minu/ 
    client.py 
    database.py 
    collection.py 
    test_client.py 
    test_database.py 
    test_client.py 

我的导入很简单。例如,client.py在顶部以下内容:

from collection import Collection 

基本上,客户端有一个客户端类,集合有一个集合类,和数据库有一个数据库类。不太强悍。

只要我cdminu目录,我可以启动一个python3解释和做的事情一样:

>>> from client import Client 
>>> c = Client(pathstring='something') 

所有的一切都只是工作。我也可以运行test_files,它使用相同类型的导入。

我想模块化这个,所以我可以通过将minu目录放在我的应用程序的.py文件旁边并使所有内容都可以使用来使用另一个项目。当我这样做,但是从另一个目录运行python3时,本地导入不起作用。我在minu目录中放置了一个空的init .py。这使得我可以import minu。但其他人破裂了。我尝试使用像from .collection import Collection(添加了点)之类的东西,但之后我无法再像原来那样在原始目录中运行任何东西。什么是简单/正确的方法来做到这一点?

我环顾四周与谷歌博士了一下,但没有的例子确实澄清好,随意点出了一个我错过

回答

1

在这个文件中导入...minu/__init__.py要子模块外部暴露。

如果__init__.py文件包含以下行,并且client.py文件有一个变量foo

import client 
import collection 
import database 
从阿米努目录之上

接着,下面的工作:

from minu.client import foo