Python - 將包類導入控制台全局名稱空間


Answers

Question

我有一個麻煩的地方讓我的python類在python控制台中工作。 我想自動將所有的類導入到全局命名空間中,這樣我就可以在不使用任何prefix.module.names的情況下使用它們。

這是我到目前為止...

projectname/
|-__init__.py
|
|-main_stuff/
  |-__init__.py
  |-main1.py
  |-main2.py
  |
  |-other_stuff/
    |-__init__.py
    |-other1.py
    |-other2.py

每個文件定義一個相同名稱的類,例如main1.py將定義一個名為Main1的類。

我的PYTHONPATH是projectname /的絕對路徑。

我有一個包含這個python啟動文件:

from projectname import *

但是這並不能讓我使用我的課程。 啟動一個python控制台後,我希望能夠寫出:

ob=Main1()

但Main1不在當前的命名空間內,所以不起作用。

我試著把東西添加到__init__.py文件中

projectname/__init__.py

import main_stuff

在項目名稱projectname/main_stuff/__init__.py

import other_stuff
__all__ = ["main1", "main2", "main3"]

等等。 在我的啟動文件中,我補充道:

from projectname.main_stuff import *
from projectname.main_stuff/other_stuff import *

但要使用python控制台中的類,我仍然必須寫:

ob=main1.Main1()

我寧願不需要main1. 部分。 有誰知道我怎麼能自動把我的類在全球名稱空間使用python控制台?

謝謝。

====編輯====

我需要的是在類級別導入包,但是from package import *在模塊級別給我所有的東西。 我正在做一個這樣的簡單的方法:

for module in package do:
    from package.module import *

====另一個編輯====

我結束了分類添加到我的python啟動文件。 這是不理想的,因為維護它的開銷,但它做我想要的。

from class1.py import Class1
from class2.py import Class2
from class3.py import Class3