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