Windows下Python Scripts目录可执行文件生成机制及路径配置问题问询
问题1:Windows下脚本目录可执行文件的生成工具
你看到的pip.exe这类入口可执行文件,由Python打包生态底层的distlib模块提供的预制启动器模板生成,pip、setuptools在处理包的入口脚本时,会自动调用该模块的能力,将入口脚本、shebang配置嵌入到模板中生成最终的exe文件,无需额外依赖py2exe这类独立打包工具。
问题2:修改shebang硬编码绝对路径的解决方案
你可以通过以下几种方式修改默认行为,适配便携Python的需求:
- 方案1:安装包时指定
--python参数
执行包安装操作时添加--python python参数,即可让生成的exe内嵌的shebang直接使用无路径的python,而非当前解释器的绝对路径。
例如安装pip时执行:
日常安装第三方包时执行:python get-pip.py --python python
要永久生效的话,在WinPython用户目录下的pip配置文件pip install <包名> --python pythonpip.ini中添加如下配置即可:[global] python = python - 方案2:修改distlib默认配置
找到WinPython安装目录下的Lib/site-packages/distlib/scripts.py文件,修改生成shebang的逻辑,将默认返回当前解释器绝对路径的代码改为直接返回'python',后续所有通过pip、setuptools安装的包生成的入口exe都会自动使用该shebang。 - 方案3:批量重写已有exe的shebang
对于已经生成的带硬编码路径的exe,可以用distlib自带的接口批量修改,参考代码如下:from distlib.scripts import ScriptMaker # 第二个参数填你Python环境的Scripts目录路径 maker = ScriptMaker(None, r"C:\path\to\your\python\Scripts") maker.executable = "python" # 强制重写所有exe文件的shebang maker.fix_scripts(".exe", force=True)
内容的提问来源于stack exchange,提问作者mojo
相关产品推荐
相关产品推荐

