Python Pyinstaller,正在将子文件夹路径添加到sys.path
如何使pyinstaller将路径添加到包中包含包的子文件夹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'] 我想让
我正在使用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兼容时,我想向文件夹中添加额外的路径(包内)。