Python-将包类导入控制台全局命名空间
我在让python类在python控制台中工作时遇到了一些问题。我想自动将我的所有类导入全局命名空间,这样我就可以在不使用任何前缀.module.names的情况下使用它们 这是我到目前为止得到的Python-将包类导入控制台全局命名空间,python,import,console,namespaces,global,Python,Import,Console,Namespaces,Global,我在让python类在python控制台中工作时遇到了一些问题。我想自动将我的所有类导入全局命名空间,这样我就可以在不使用任何前缀.module.names的情况下使用它们 这是我到目前为止得到的 projectname/ |-__init__.py | |-main_stuff/ |-__init__.py |-main1.py |-main2.py | |-other_stuff/ |-__init__.py |-other1.py |-other
projectname/
|-__init__.py
|
|-main_stuff/
|-__init__.py
|-main1.py
|-main2.py
|
|-other_stuff/
|-__init__.py
|-other1.py
|-other2.py
每个文件定义一个同名的类,例如main1.py将定义一个名为main1的类
MyPYTHONPATH
是指向projectname/的绝对路径
我有一个python启动文件,其中包含:
from projectname import *
但这根本不允许我使用我的类。在启动python控制台时,我希望能够编写:
ob=Main1()
ob=main1.Main1()
但是Main1不在当前名称空间内,因此无法工作
我尝试向\uuuu init\uuuuuu.py
文件添加内容
在projectname/\uuuu init\uuuu.py
中:
import main_stuff
import other_stuff
__all__ = ["main1", "main2", "main3"]
from other_stuff import *
__all__ = ["main1", "main2", "main3"]
在projectname/main\u stuff/\uuuuuu init\uuuuuu.py
中:
import main_stuff
import other_stuff
__all__ = ["main1", "main2", "main3"]
from other_stuff import *
__all__ = ["main1", "main2", "main3"]
等等。在我的启动文件中,我添加了:
from projectname.main_stuff import *
from projectname.main_stuff/other_stuff import *
但要在python控制台中使用这些类,我仍然需要编写:
ob=Main1()
ob=main1.Main1()
我宁愿不需要main1.
部件。有人知道在使用python控制台时如何自动将类放入全局命名空间吗
谢谢
==编辑====
我需要的是在类级别导入一个包,但是包导入的提供了模块级别的一切。我想要一个简单的方法来做这样的事情:
for module in package do:
from package.module import *
import foo
==另一次编辑====
最后,我将类导入单独添加到python启动文件中。这并不理想,因为维护它的开销很大,但它满足了我的需求
from class1.py import Class1
from class2.py import Class2
from class3.py import Class3
您希望使用不同的导入形式
在projectname/main\u stuff/\uuuuuu init\uuuuuu.py
中:
import main_stuff
import other_stuff
__all__ = ["main1", "main2", "main3"]
from other_stuff import *
__all__ = ["main1", "main2", "main3"]
当您使用这样的语句时:
for module in package do:
from package.module import *
import foo
您正在当前模块中定义名称foo。然后您可以使用foo.something
获取foo中的内容
使用此选项时:
from foo import *
您将获取在foo中定义的所有名称,并在此模块中定义它们(就像将一桶名称从foo倒入您的模块中)