2015-04-04 81 views
4

当前位置:项目名/ src目录导入类从另一个目录 - Python的

类地点:项目名/工厂模块/工厂类

尝试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

是的,我没发布前先搜索,但没有设法得到它的工作还没有。 – Elia 2015-04-04 14:47:53

+0

“Project Name”目录是否仅包含Python源代码?如果是这样,你可以考虑把它转换成一个包。预期如何使用工厂模块和类?是的,你可以用'sys.path'搞定,但除非你知道自己在做什么,否则你可能会真的搞砸你未来的可扩展性。提供有关“项目名称”内容的更多信息。你的'main'位于哪里? – OozeMeister 2015-04-04 15:00:52

+0

项目名称也包含其他文件格式(txt,pts,csv,dxf ...) 我应该简单地将类导入为模块并使用它们包含的函数..Main位于src/TryNewFunctions – Elia 2015-04-04 15:13:07

回答

0

您可以尝试类似:

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模块(应包含__init__.py文件的目录内)。如果不是,请创建一个空的。


备选地只加载类直列,在Python 3你可以使用exec(),例如:

exec(open(filename).read()) 

在Python 2:execfile()

参见:Alternative to execfile in Python 3.2+?


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

PYTHONPATH=$PWD/FooDir ./foo.py 

其他解决方案检查:How to import other Python files?

+0

我尝试过,得到第一条路径为: 'C:\\ Users \\ ## \\ workspace \\ Project_Name \\ src \\ Factory Modules \\ Factory Classes'' 我仍然得到'ImportError:No module – Elia 2015-04-04 15:11:32

+0

@Elia的错误也许你的模块不是模块。确保你的模块添加的路径包含'__init __。py'。 – kenorb 2015-04-04 15:16:34

+0

那么,没有一个文件夹包含'__init __。py' 如果我在类文件夹内创建新的'xx.py',然后使用: 'import FactoryClass1'导入它,那么一切似乎都很好。但是我无法设法从该文件夹外的'xx.py'文件导入它。 – Elia 2015-04-04 15:23:30