通常,当整个项目适合单个模块文件时,您只将python包作为模块分发.如果您的项目比这更复杂,通常最好将项目构造为包含__init__.py文件的包.这是您的项目看起来像转换为包的内容
Project/
|-- README
|-- requirement.txt
|-- setup.py
|-- scripts/
| |-- driver.py
|-- driver/
| |-- __init__.py
| |-- module_1
| | |-- __init__.py
| | |-- class_1.py
| | |-- class_2.py
| |-- module_2
| |-- |-- __init__.py
| |-- |-- class_1.py
| |-- |-- class_2.py
我将run.py重命名为scripts / driver.py,而之前在driver.py中的代码现在是driver / __ init__.py.
你的setup.py应该是这样的
from setuptools import setup. find_packages
setup(
name='driver',
version='1.0',
packages=find_packages(),
scripts=['scripts/driver.py'],
)
这会将scripts / driver.py复制到python Scripts目录.我将run.py重命名为driver.py,因为run非常通用,并且您希望脚本名称是唯一的,因为所有python包共享相同的脚本位置.
或者,您可以使用console_scripts入口点.在这种情况下,您将没有单独的scripts / driver.py脚本.相反,你只需要在你的包中有一个功能.在这种情况下,您可以将脚本/ driver.py中的所有代码移动到driver / command_line.py中,并将其放在名为main()的函数中.然后将setup.py更改为此
setup(
name='driver',
version='1.0',
packages=find_packages(),
entry_points = {
'console_scripts': ['driver=driver.command_line:main'],
}
)