Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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_Pydev - Fatal编程技术网

从另一个目录导入类-Python

从另一个目录导入类-Python,python,pydev,Python,Pydev,当前位置:ProjectName/src 类别位置:项目名称/工厂模块/工厂类别 尝试1: from FactoryClass1 import FactoryClass1 尝试2: import sys sys.path.append(path_to_classes_folder) from FactoryClass1 import FactoryClass1 然而,我不断得到“ImportError:没有名为PointSet的模块” 为了能够在类中使用函数,应该如何编写import语句 您

当前位置:ProjectName/src

类别位置:项目名称/工厂模块/工厂类别

尝试1:

from FactoryClass1 import FactoryClass1
尝试2:

import sys
sys.path.append(path_to_classes_folder)
from FactoryClass1 import FactoryClass1
然而,我不断得到“ImportError:没有名为PointSet的模块”


为了能够在类中使用函数,应该如何编写import语句

您可以尝试以下方法:

import os.path, sys
# Add current dir to search path.
sys.path.insert(0, "dir_or_path")
# Add module from the current directory.
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模块(应该在目录中包含
\uuuu init\uuuu.py
文件)。如果不是,则创建一个空的


或者,在Python 3中,您可以使用
exec()
,以内联方式加载类,例如:

exec(open(filename).read())
在Python 2中:
execfile()

见:


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

PYTHONPATH=$PWD/FooDir ./foo.py


对于其他解决方案,请检查:

是的,我在发布之前先搜索了,但还没有成功使其工作。
项目名称
目录是否只包含Python源代码?如果是这样,您可以考虑将其转换为包。工厂模块和类预期如何使用?是的,您可以随意使用
sys.path
,但除非您知道自己在做什么,否则您可能真的会破坏您未来的可伸缩性。提供有关
项目名称
内容的更多信息。您的
main
位于何处?项目名称还包含其他文件格式(txt、pts、csv、dxf…),我只需将类作为模块导入,并使用它们包含的函数。。Main位于src/trynewfunction中我尝试过,得到的第一个路径是:“C:\\Users\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\workspace\\src\\Factory Modules\\Factory Classes”“我仍然收到相同的“导入错误:否”module@Elia也许你的模块不是模块。确保模块的添加路径包含
\uuuuuuuuuuuuuuuuuuuuuuuuuuuupy
。如果我在类文件夹中创建新的
xx.py
,然后使用:
导入FactoryClass1
导入它,那么一切看起来都很好。但是,我无法从该文件夹外的
xx.py
文件导入它。@Elia从Python导入的每个模块都应该包含
\uuuu init\uuuu.py
。还要记住
sys中的所有路径。path
应该是绝对路径,所以可能您使用的是相对路径。若你们有一些具体的非工作案例,那个么重新编辑问题,并提供更多关于类位置的详细信息(在这种情况下它不工作)。。。这没有任何意义,但它起了作用。。谢谢你@kenorb