如何调用Python中其他目录中的类
我有一个主执行python文件(F),我想在其中使用来自其他python类的一些服务 文件夹结构为:如何调用Python中其他目录中的类,python,class,Python,Class,我有一个主执行python文件(F),我想在其中使用来自其他python类的一些服务 文件夹结构为: root/a/my file to execute -- (F) root/b/python class I would like to use -- (S) 如何在文件(F)中调用请求的python类 谢谢。在您希望包含的目录中创建一个\uuuu init\uuuuuuuuy.py文件 让我们想象一下我们有两个目录,一个叫做src,另一个叫做utils 如果在src目录中有Main.py,并
root/a/my file to execute -- (F)
root/b/python class I would like to use -- (S)
如何在文件(F)中调用请求的python类
谢谢。在您希望包含的目录中创建一个
\uuuu init\uuuuuuuuy.py
文件
让我们想象一下我们有两个目录,一个叫做src
,另一个叫做utils
如果在src
目录中有Main.py
,并且希望在名为Connections.py
的文件(位于utils
中)中使用名为Network
的类,则可以执行以下操作
from utils import Connections
my_instance = Connections.Network()
#Then use the instance of that class as so.
my_instance.whateverMethodHere()
请注意,这同样适用于您创建的任何包含*.py
文件的文件夹。例如,我们可以拥有文件夹a、b、c
,您只需从a.b.c导入连接执行,或执行任何文件名即可
1)在utils
目录中创建一个初始化.py
文件(它可以是空的),然后从Main.py
执行以下操作
from utils import Connections
my_instance = Connections.Network()
#Then use the instance of that class as so.
my_instance.whateverMethodHere()
目录如下所示:
root dir
- src
-__init__.py
- Main.py
- utils
-__init__.py
- Connections.py
有关更多详细信息,您可以查看更深入的python文档。
根据上面的链接,了解更多关于python软件包的信息,以及我们为什么使用\uuu init\uuuu.py
:
root dir
- src
-__init__.py
- Main.py
- utils
-__init__.py
- Connections.py
导入包时,Python会在上的目录中进行搜索
sys.path查找包子目录
init.py文件是使Python处理
包含包的目录;这样做是为了防止
无意中使用公用名称(如字符串)的目录
隐藏稍后在模块搜索路径上出现的有效模块。在里面
最简单的情况是,init.py可以只是一个空文件,但它可以是一个空文件
同时执行包的初始化代码或设置all
变量,稍后描述
在您希望包含的目录中创建一个\uuuuuu init\uuuuuuuuuuuupy
文件
让我们想象一下我们有两个目录,一个叫做src
,另一个叫做utils
如果在src
目录中有Main.py
,并且希望在名为Connections.py
的文件(位于utils
中)中使用名为Network
的类,则可以执行以下操作
from utils import Connections
my_instance = Connections.Network()
#Then use the instance of that class as so.
my_instance.whateverMethodHere()
请注意,这同样适用于您创建的任何包含*.py
文件的文件夹。例如,我们可以拥有文件夹a、b、c
,您只需从a.b.c导入连接执行,或执行任何文件名即可
1)在utils
目录中创建一个初始化.py
文件(它可以是空的),然后从Main.py
执行以下操作
from utils import Connections
my_instance = Connections.Network()
#Then use the instance of that class as so.
my_instance.whateverMethodHere()
目录如下所示:
root dir
- src
-__init__.py
- Main.py
- utils
-__init__.py
- Connections.py
有关更多详细信息,您可以查看更深入的python文档。
根据上面的链接,了解更多关于python软件包的信息,以及我们为什么使用\uuu init\uuuu.py
:
root dir
- src
-__init__.py
- Main.py
- utils
-__init__.py
- Connections.py
导入包时,Python会在上的目录中进行搜索
sys.path查找包子目录
init.py文件是使Python处理
包含包的目录;这样做是为了防止
无意中使用公用名称(如字符串)的目录
隐藏稍后在模块搜索路径上出现的有效模块。在里面
最简单的情况是,init.py可以只是一个空文件,但它可以是一个空文件
同时执行包的初始化代码或设置all
变量,稍后描述
这可能太明显了,但其他答案缺少确保模块b
位于sys.path
中的必要性。因此,假设问题中的文件夹结构,并假设目录b
包含一个名为\uuuu init\uuuu.py
的文件以及模块s.py
,则需要以下咒语:
# Add the b directory to your sys.path
import sys, os
parent_dir = os.getcwd() # find the path to module a
# Then go up one level to the common parent directory
path = os.path.dirname(parent_dir)
# Add the parent to sys.pah
sys.path.append(path)
# Now you can import anything from b.s
from b.s import anything
...
这可能太明显了,但其他答案缺少确保模块b
位于sys.path
中的必要性。因此,假设问题中的文件夹结构,并假设目录b
包含一个名为\uuuu init\uuuu.py
的文件以及模块s.py
,则需要以下咒语:
# Add the b directory to your sys.path
import sys, os
parent_dir = os.getcwd() # find the path to module a
# Then go up one level to the common parent directory
path = os.path.dirname(parent_dir)
# Add the parent to sys.pah
sys.path.append(path)
# Now you can import anything from b.s
from b.s import anything
...
以这个问题为例,下面是您当前的目录树:
A folder:
file a.py
file b.py
B folder:
file c.py
file d.py
在c.py中,您希望将a.py导入宏。然后你可以这样做:
import os
# insert 1, 2, 3... but not 0, 0 is your working directory
sys.path.insert(1, "Folder A 's absolute path")
# Here, you can import module A directly
import a
以这个问题为例,下面是您当前的目录树:
A folder:
file a.py
file b.py
B folder:
file c.py
file d.py
在c.py中,您希望将a.py导入宏。然后你可以这样做:
import os
# insert 1, 2, 3... but not 0, 0 is your working directory
sys.path.insert(1, "Folder A 's absolute path")
# Here, you can import module A directly
import a
但是我如何包括这个目录呢?我的意思是,我在“导入…”之后写了什么?文件夹层次结构,它在这里是如何工作的?我的意思是,如果Util位于root/a/b/c/Util下,那么我应该如何包括这个目录?我的意思是,我在“导入…”之后写了什么?文件夹层次结构,它在这里是如何工作的?我的意思是,如果Util位于root/a/b/c/utilgauden下-我遵循了您的指示,但在执行过程中(当代码到达import语句时),我得到了“ImportError”异常-没有名为(我尝试导入的文件夹名称)的模块,正如我所说的,sys.path.append完成了它的工作……我确实得到了存储在我试图导入的模块中的所有文件,因此我创建的路径是OK的,谢谢您的支持。我可以假设你的问题已经解决了吗?这里的注释暗示可能仍然存在问题。gauden-我已经按照您的说明进行了操作,但是在执行过程中(代码到达import语句时),我遇到了“ImportError”异常-没有名为(我尝试导入的文件夹名称)的模块,正如我所说,sys.path.append完成了它的工作…我完成了