如何让 pyinstaller 添加路径到包含包内的包的子文件夹?
我正在使用规范文件创建一个文件夹包。我想将一些包保存在包内的单独子文件夹中,但程序看不到这些包。(只有当我将它们移动到主文件夹时,它才能加载这些包)。所以我已经将子文件夹路径添加到 sys.path 以使其工作。
运行exe文件编译后,print(sys.path)
显示两条路径:['C:\dist\MyProgramFolder\base_library.zip', 'C:\dist\MyProgramFolder']
我希望它显示我的子文件夹的额外路径(以便我可以从那里加载包),如下所示:['C:\dist\MyProgramFolder\base_library.zip', 'C:\dist\MyProgramFolder', 'C:\dist\MyProgramFolder\Subfolder']
当然我可以在 Python 脚本的开头添加额外的路径:sys.path.append(os.path.join(os.path.dirname(sys.path[0]),'Subfolder')
.
但是有没有什么办法可以让pyinstaller在编译时自动添加这个路径呢?或者还有其他方法可以从子文件夹加载包吗?
答案 0 :(得分:1)
您可以使用 setuptools 轻松完成。
示例项目文件夹结构如下。
.my_project
├── __init__.py
├── _module_a
│ ├── __init__.py
│ └── some_func.py
├── utils.py
└── setup.py
utils.py
def func_util():
print("func_util called..")
some_func.py
from my_project.utils import func_util
if __name__ == "__main__":
func_util()
setup.py
from setuptools import setup, find_packages
setup(name='my_project', version='1.0', packages=find_packages())
(venv) PS C:\path_to_your_project_folder> python .\module_a\some_func.py
func_util called..