从另一个目录导入类 - Python

9 浏览
0 Comments

从另一个目录导入类 - Python

当前位置:ProjectName/src

类位置:ProjectName/Factory Modules/Factory Classes

尝试1:

from FactoryClass1 import FactoryClass1

尝试2:

import sys
sys.path.append(path_to_classes_folder)
from FactoryClass1 import FactoryClass1

然而,我一直收到“ImportError: No module named PointSet”的错误。

为了能够使用类中的函数,应该如何编写导入语句?

0
0 Comments

在Python中,如果需要从另一个目录导入类,可能会遇到一些问题。以下是解决此问题的原因和解决方法。

问题的原因是当前目录不在Python的搜索路径中,因此无法导入其他目录中的类。为了解决这个问题,可以通过以下方法将目录添加到Python的搜索路径中:

import os.path, sys
# 将当前目录添加到搜索路径中
sys.path.insert(0, "dir_or_path")
# 从当前目录导入模块
sys.path.insert(0, os.path.dirname(os.path.abspath(os.path.realpath(__file__))) + "/dir")

通过上述方法,可以将目录添加到Python的搜索路径中,然后可以像平常一样导入类。为了查看已添加的路径,可以使用以下代码:

import sys
from pprint import pprint
pprint(sys.path)

如果仍然无法导入类,则需要确保模块是有效的Python模块,并且目录中包含`__init__.py`文件。如果没有`__init__.py`文件,可以创建一个空文件。

另一种方法是在Python 3中使用`exec()`来内联加载类,例如:

exec(open(filename).read())

在Python 2中可以使用`execfile()`。这种方法可以直接加载类,不需要导入。详细信息请参考:[Alternative to execfile in Python 3.2+?](https://stackoverflow.com/q/6357361/55075)

如果从命令行运行脚本,还可以通过定义`PYTHONPATH`变量来指定Python路径,这样Python可以在指定的目录中查找模块,例如:

PYTHONPATH=$PWD/FooDir ./foo.py

还有其他解决方案,可以参考:[How to import other Python files?](https://stackoverflow.com/q/2349991/55075)

如果尝试上述方法仍然不能解决问题,可能是因为你的模块不是有效的模块。请确保已添加的模块路径中包含`__init__.py`文件。如果没有,请创建一个空文件。

希望以上方法能够帮助你解决从其他目录导入类的问题。如果还有其他特定情况不能工作,请提供更多关于你的类所在位置的详细信息。

0