我正在尝试将自定义模块和函数导入到我的Python脚本中,并且我尝试了相对和绝对导入,但我真的无法使其工作。我知道这个问题已在这里被多次提出,但尝试回答这些问题导致我无处可去...说我创建了一个带有函数func.py的文件,我在子目录中。它包含函数func1和func2。我想将这些函数导入到我的主程序文件中,我们称之为prog.py.这是我的目录结构的简化版本:
C:/Project
__init__.py
/Demo
__init__.py
prog.py
/Functions
__init__.py
func.py
我的__init__.py
个文件为空。我试图以不同的方式将func1和func 2导入prog.py
,但它们都不起作用。使用from .Functions.func import func1
(一个或两个点)给我
ValueError:在非包中尝试相对导入
没有前导点给我一个“没有名为...的模块”错误,有点像预期的那样。我也试过from Project.Functions.func import func1
并得到同样的错误。
我没有使用__init__.py
将其定义为包吗?我是否需要在这些文件中写一些内容,或者在某处使用__main__.py
?
我使用Windows 7 64位,因此我使用
在命令提示符下运行脚本python prog.py
在“Demo”文件夹中。否则我会不方便。我尝试使用标志为python命令并在顶层运行它,但它仍然无法工作(我将重新创建它以在需要时复制错误消息)。由于我在Windows中工作,我尝试将Project及其所有子文件夹添加到Python路径环境变量中,但无济于事。也许我可以使用sys.path.append
“手动”添加每个功能,但考虑到实际的文件数,这不太实用。
我很感激任何帮助,因为我一直坚持这个,因为我不知道多久。很抱歉还有另一个Python 2.7导入问题...希望我已经提供了足够的信息。提前谢谢!
答案 0 :(得分:0)
sys.path.append将解决它。我更喜欢(你尝试过的)ENV变量PYTHONPATH你可以放在libs那里然后python也会在那里搜索它们。
你说你添加了这个,但你的shell选择应用程序的变化?当你做
时,你是否正确设置变量?import os
print os.environ