为什么setuptools不创建我的入口点?
我的项目文件夹结构是这样的:
clc
|-clc
| |-__init__.py
| |-clc.py
| |-main.py
|-setup.py
main.py
的内容是这样的:
def main():
print "it works!"
在 setup.py
文件中:
config = {
...
'entry_points':
'clc_scripts': ['clc = clc.main:main']
}
}
setup(**config)
当我运行 python setup.py build
时,结果是这样的:
running build
running build_py
creating build
creating build/lib
creating build/lib/clc
copying clc/__init__.py -> build/lib/clc
copying clc/clc.py -> build/lib/clc
copying clc/main.py -> build/lib/clc
没有创建 bin
文件夹,尽管我指定了一个入口点。不过,它确实创建了一个文件 clc.egg-info/entry_points.txt
:
$ cat clc.egg-info/entry_points.txt
[clc_scripts]
clc = clc.main:main
为什么 setuptools 没有创建我的入口点可执行文件呢?
2 个回答
3
入口点脚本是在安装的时候创建的,而不是在构建的时候。这是因为这些脚本需要指向正确的Python解释器的位置,也就是你安装的那个Python的具体位置。
5
1) 生成脚本的入口点叫做 console_scripts
。
所以在你的 setup.py
文件中,把入口点的名字改成这样:
config = {
...
'entry_points':
'console_scripts': ['clc = clc.main:main']
}
}
2) 入口点 在你仅仅执行 build
来构建你的分发包时是不会被执行的。它们实际上只有在 install
或 develop
时才有意义。试试运行 python setup.py install
。