python setup.py install 更改脚本解释器

2 投票
1 回答
1876 浏览
提问于 2025-04-16 08:57

我有一个Python包,里面有一些脚本放在一个叫做 scripts/ 的文件夹里。我的 setup.py 文件里包含了以下内容::

#!/usr/bin/env python

from distutils.core import setup

scripts = ['script1', 'script2', 'script3']

setup(name='Test',
      version='0.1.0',
      packages=['test'],
      scripts=['scripts/' + x for x in scripts]
     )

每个脚本的开头都有这一行::

#!/usr/bin/env python

但是,当我运行 python setup.py install 时,这一行会自动变成::

#!/usr/bin/python

在安装后的脚本中。这让我很困扰,因为我在使用虚拟环境(virtualenv),所以Python可执行文件的正确路径应该是::

#/Users/user/.virtualenvs/default/bin/python

所以我希望它能保持解释器设置为::

#!/usr/bin/env python

谢谢大家的建议!

1 个回答

4

安装脚本会检查你的电脑上安装了哪个Python,然后把这个Python换成正确的版本。这个过程会在每一台安装了你这个包的机器上进行。

根据文档:

脚本是包含Python源代码的文件,目的是从命令行启动。脚本不需要使用Distutils来做复杂的事情。唯一聪明的地方是,如果脚本的第一行以#!开头,并且包含“python”这个词,Distutils会自动调整这一行,让它指向当前的Python解释器位置。默认情况下,这一行会被替换为当前解释器的位置。使用--executable(或-e)选项,可以明确指定解释器的路径。

撰写回答