Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-将包类导入控制台全局命名空间_Python_Import_Console_Namespaces_Global - Fatal编程技术网

Python-将包类导入控制台全局命名空间

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

我在让python类在python控制台中工作时遇到了一些问题。我想自动将我的所有类导入全局命名空间,这样我就可以在不使用任何前缀.module.names的情况下使用它们

这是我到目前为止得到的

projectname/
|-__init__.py
|
|-main_stuff/
  |-__init__.py
  |-main1.py
  |-main2.py
  |
  |-other_stuff/
    |-__init__.py
    |-other1.py
    |-other2.py
每个文件定义一个同名的类,例如main1.py将定义一个名为main1的类

My
PYTHONPATH
是指向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倒入您的模块中)