您可以尝试类似:
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?
是的,我没发布前先搜索,但没有设法得到它的工作还没有。 – Elia 2015-04-04 14:47:53
“Project Name”目录是否仅包含Python源代码?如果是这样,你可以考虑把它转换成一个包。预期如何使用工厂模块和类?是的,你可以用'sys.path'搞定,但除非你知道自己在做什么,否则你可能会真的搞砸你未来的可扩展性。提供有关“项目名称”内容的更多信息。你的'main'位于哪里? – OozeMeister 2015-04-04 15:00:52
项目名称也包含其他文件格式(txt,pts,csv,dxf ...) 我应该简单地将类导入为模块并使用它们包含的函数..Main位于src/TryNewFunctions – Elia 2015-04-04 15:13:07