如何调用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,并

我有一个主执行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
,并且希望在名为
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完成了它的工作…我完成了