Python PyInstaller不包括导入

Python PyInstaller不包括导入,python,pyinstaller,Python,Pyinstaller,我对PyInstaller(包括任何导入的自定义模块)有问题。 我有一个main.py调用一个方法 from Printer.function import Repeat def main(): name = input("Your Name: ") Repeat(3,name) input("Press enter to exit") main() 通过VS代码,一切正常 但是,使用pyInstaller,当我运行exe文件时,它会抛出一个错误,即找不到模块“

我对PyInstaller(包括任何导入的自定义模块)有问题。 我有一个main.py调用一个方法

from Printer.function import Repeat

def main():
    name = input("Your Name: ")
    Repeat(3,name)

    input("Press enter to exit") 

main()
通过VS代码,一切正常

但是,使用pyInstaller,当我运行exe文件时,它会抛出一个错误,即找不到模块“function”。 我正在运行这个命令

pyinstaller.exe -p K:\HelloWorldEXE\Printer K:\HelloWorldEXE\main.py --onefile
有人能解释一下吗?我不知道如何使用隐藏的导入或挂钩使其工作

谢谢。

两种可能的解决方案

1.

正如@legoroj所提到的,试着从脚本所在的目录运行它,例如

K:\HelloWorldEXE> pyinstaller main.py --onefile
2.

默认情况下,python只搜索当前目录。因此,如果需要,还可以附加一点路径

在脚本中,设置程序包的路径:

import sys
sys.path.append('C:\PathTo\project\package1')
import module1

这应该可以解决您遇到的问题。

从脚本所在的目录运行它-
K:\HelloWorldEXE>pyinstaller main.py--onefile
请查看我的解决方案,并告诉我是否存在任何问题。感谢@legoroj的回答。它起作用了!如果问题解决了,请随意接受或发布答案。正如您所猜测的,诀窍是蟒蛇。我不会在您想要编译的脚本中编辑pythonpath,它会影响输出。相反,为PyInstaller指定
-p/--path
选项。这将在PyInstaller搜索导入时向pythonpath添加指定的路径。(该选项可多次使用)。请注意,从脚本所在的目录运行,因为它将该路径(工作目录)添加到pythonpath。