Python Pyinstaller,正在将子文件夹路径添加到sys.path

Python Pyinstaller,正在将子文件夹路径添加到sys.path,python,pyinstaller,Python,Pyinstaller,如何使pyinstaller将路径添加到包中包含包的子文件夹 我正在使用spec文件创建一个文件夹包。我想将一些包保存在捆绑包中单独的子文件夹中,但程序看不到这些包(只有当我将它们移动到主文件夹时,程序才能加载这些包)。因此,我将子文件夹路径添加到sys.path以使其正常工作。 运行exe文件编译后,print(sys.path)显示两个路径:['C:\dist\MyProgramFolder\base\u library.zip','C:\dist\MyProgramFolder'] 我想让

如何使pyinstaller将路径添加到包中包含包的子文件夹
我正在使用spec文件创建一个文件夹包。我想将一些包保存在捆绑包中单独的子文件夹中,但程序看不到这些包(只有当我将它们移动到主文件夹时,程序才能加载这些包)。因此,我将子文件夹路径添加到sys.path以使其正常工作。
运行exe文件编译后,
print(sys.path)
显示两个路径:
['C:\dist\MyProgramFolder\base\u library.zip','C:\dist\MyProgramFolder']

我想让它显示到我的子文件夹的额外路径(这样我可以从那里加载包),如下所示:
['C:\dist\MyProgramFolder\base\u library.zip','C:\dist\MyProgramFolder','C:\dist\MyProgramFolder\subfolder']

当然,我可以在Python脚本的开头添加额外的路径:
sys.path.append(os.path.join(os.path.dirname(sys.path[0]),'Subfolder')


但有没有办法让pyinstaller在编译过程中自动添加此路径?或者有没有其他方法可以从子文件夹加载包?

您可以轻松地使用

下面是示例项目文件夹结构

.my_project
├── __init__.py
├── _module_a
│   ├── __init__.py
│   └── some_func.py
├── utils.py
└── setup.py
utils.py

def func_util():
    print("func_util called..")
from my_project.utils import func_util


if __name__ == "__main__":
    func_util()
from setuptools import setup, find_packages

setup(name='my_project', version='1.0', packages=find_packages())

一些函数py

def func_util():
    print("func_util called..")
from my_project.utils import func_util


if __name__ == "__main__":
    func_util()
from setuptools import setup, find_packages

setup(name='my_project', version='1.0', packages=find_packages())

setup.py

def func_util():
    print("func_util called..")
from my_project.utils import func_util


if __name__ == "__main__":
    func_util()
from setuptools import setup, find_packages

setup(name='my_project', version='1.0', packages=find_packages())

  • cd my_项目(/path到项目的根目录)
  • python-m venv(创建虚拟环境)
  • /venv/脚本/激活(激活您的venv for windows)
  • pip安装-e。(.代表我们项目的根文件夹)
运行一些函数
另一种思考方式是如何引用python程序中的文件夹。我将看一看setuptools,但不知道它有什么帮助。当我的应用程序与pyinstaller兼容时,我想向文件夹中添加额外的路径(包内)。