如何从C:\Python37\Scripts创建类似于pip.exe、jupyter.exe等的.exe?

如何从C:\Python37\Scripts创建类似于pip.exe、jupyter.exe等的.exe?,python,windows,pip,executable,Python,Windows,Pip,Executable,为了使Windows上的命令行中的pip或jupyter可用,无论当前的工作目录是pip…还是jupyter…,Windows上的Python似乎都使用了以下方法: 将C:\Python37\Scripts放入路径中 创建一个小的100KB.exe文件C:\Python37\Scripts\pip.exe或jupyter.exe,这可能仅仅是用解释器调用Python脚本(我想是吧?) 然后在命令行中执行pip…或jupyter…,无论当前目录如何 问题:如何创建一个类似的100KBmycom

为了使Windows上的命令行中的
pip
jupyter
可用,无论当前的工作目录是
pip…
还是
jupyter…
,Windows上的Python似乎都使用了以下方法:

  • C:\Python37\Scripts
    放入路径中
  • 创建一个小的100KB.exe文件
    C:\Python37\Scripts\pip.exe
    jupyter.exe
    ,这可能仅仅是用解释器调用Python脚本(我想是吧?)
然后在命令行中执行
pip…
jupyter…
,无论当前目录如何

问题:如何创建一个类似的100KB
mycommand.exe
,将其放入路径中的目录中,以便从命令行中的任何位置执行
mycommand


注意:我不是说pyinstaller、cxfreeze等(我已经知道并且以前使用过);我不认为这些
C:\Python37\Scripts\
exe文件使用此功能。

假设您正在使用setuptools打包此应用程序,您需要创建一个
console\u Scripts
入口点,如下所述:

对于单个顶级模块,它可能如下所示:

setup.py

#!/usr/bin/env python3

import setuptools

setuptools.setup(
    py_modules=['my_top_level_module'],
    entry_points={
        'console_scripts': [
            'mycommand = my_top_level_module:my_main_function',
        ],
    },
    # ...
    name='MyProject',
    version='1.0.0',
)
#!/usr/bin/env python3

def my_main_function():
    print("Hi!")

if __name__ == '__main__':
    my_main_function()
my\u top\u level\u module.py

#!/usr/bin/env python3

import setuptools

setuptools.setup(
    py_modules=['my_top_level_module'],
    entry_points={
        'console_scripts': [
            'mycommand = my_top_level_module:my_main_function',
        ],
    },
    # ...
    name='MyProject',
    version='1.0.0',
)
#!/usr/bin/env python3

def my_main_function():
    print("Hi!")

if __name__ == '__main__':
    my_main_function()
然后使用以下命令安装它:

path/to/pythonX.Y -m pip install path/to/MyProject

对于顶级模块:
“mycommand=my\u top\u level\u模块:my\u main\u函数”
。这些问题太多了。我建议您阅读我的答案中链接的整个页面,或者先从一个较短的教程开始,比如这篇:不确定它是否与您遇到的问题相同,但我的示例中有一个错误。参数
py_modules
将列表作为参数,因此它应该是:
py_modules=['my_top_level_module']
。也许这是你们这边的问题。它解决了问题@sinoroc,谢谢!PS:我编辑添加了替代的
python setup.py安装
。还没有官方声明,但是如果您遵循了,那么或多或少:setuptools是后端,pip是前端。因此,构建/安装前端(pip)调用后端(可以是setuptools或其他任何东西),并且用户体验是一致的。以下是一些声明:--