当通过pip安装django时,PATH环境变量被修改为允许用户直接在终端中访问django-admin。(django-admin startproject project_name(
我想对我的点子包也是如此。 我研究了使用 python 修改环境变量,但os.environ["PATH"]在 python 脚本结束后不会保存。
有什么建议吗?
执行此操作的理想方法是为setuptools
提供一个入口点。
您不是编写脚本,而是在其中一个模块中编写函数。
例如,将此线路添加到setup.py
中的setup
呼叫中:
entry_points = {
'console_scripts': ['mytool'=mypkg.myscript:myfunc'],
}
。setuptools
将在安装时自动创建一个名为mytool
的脚本,该脚本将 mypkg.myscript 导入 myfuncand calls its
myfunc, all in a way that's appropriate for whatever Python installation the user used to
pip installyour package, and put
mytoolonto the user's
PATH'。
这样,它可以解决您从未想过的各种可移植性问题。如果用户使用的是Windows,并且他们的默认Python是2.7,但他们使用py -3 -m pip
来安装它怎么办?他们会得到一个名为mytool.py
而不是mytool
的文件,并且它将有一个与Windowspy
启动器兼容的shbang行,并且它将正常工作。
有时,您无法以这种方式重新组织内容,并且必须手动编写脚本。在这种情况下,只需通过将此参数添加到setup
调用中,为setuptools
提供脚本的路径:
scripts=['bin/mytool']
setuptools
不能在这里发挥它所有的魔力,但它仍然可以将脚本安装到用户的PATH
中。
当然,所有这些都取决于Python的正确设置。但是,无论Python设法将pip
和django-admin
放在您的PATH
上,那么它将以完全相同的方式将您的脚本放在PATH
上。