我有一个具有以下结构的python包:
Package
├───ExternalModules
│ ├───external_module.exe
│ └───external_module_importer.py
└───setup.py
该软件包与 setup.py 文件("pip install ./"(一起安装,其中有一个依赖于executable_module.exe运行的库/依赖项。
我不希望我的用户必须下载模块并手动添加路径,因此我想将其放在我的软件包中并自动将其添加到系统路径(在软件包安装期间或运行时(。
目前,我有这个external_module_importer.py尝试通过以下方式导入它:
import os
import sys
def add_module_to_path():
filedir = os.path.dirname(os.path.abspath(__file__))
sys.path.append(filedir)
但即使我调用此函数,依赖于 .exe 文件的外部依赖项也会给我以下错误:
FileNotFoundError: external_module not found or not executable, check the configuration file
如果我手动将包/外部模块/文件夹添加到 PATH,它可以工作。
有没有好的解决方案?
回答自己:
当我附加到sys.path时,我将目录添加到PYTHONPATH环境变量中,而不是系统PATH变量中。
要做 de 前者 必要的命令是这样的:
os.environ["PATH"] += os.pathsep + path
这与系统无关。