当开始开发一个新的 python 项目时,我将尝试根据我的方法给出另一个答案。您打算分发您的项目,还是只是与某人分享?如果您这样做,您认为如何 - 这个人会因为需要记住命令而感到高兴吗
$ python path/to/project/codebase/cli/cli.py --help
使用你的工具?他记住命令不是更容易吗
$ cli --help
instead?
我建议您立即开始打包您的项目 - 编写一个最小的设置脚本:
from setuptools import setup, find_packages
setup(
name='mypkg',
version='0.1',
packages=find_packages(),
install_requires=['click'],
entry_points={
'console_scripts': ['cli=cli.cli:cli'],
},
)
当新需求出现时,您始终可以增强您的设置脚本。将安装脚本放置在代码库的根目录中:
├── setup.py
├── cli
│ ├── __init__.py
│ ├── aws
...
Now run python setup.py develop
or even better, pip install --editable=.
1 from the codebase root directory (where the setup.py
script is). You have installed your project in the development mode and now can invoke
$ cli --help
所有导入均已正确解决(这将解决您的问题)。但除此之外,您还可以获得更多 - 您获得了一种打包项目以准备分发给目标用户的方法,以及一个干净的命令行界面,您的用户将以与您刚才相同的方式调用该界面。
现在继续项目开发。如果你改变代码cli
命令,它将即时应用,因此您无需在每次更改任何内容时重新安装项目。
一旦您准备好项目开发并希望将其交付给您的用户,请发出:
$ python setup.py bdist_wheel
这会将您的项目打包成可安装的wheel
文件(您需要安装wheel
包以便能够调用命令:pip install wheel --user
)。通常它会驻留在dist
代码库根目录的子目录。将此文件提供给用户。要安装该文件,他将发出
$ pip install Downloads/mypkg-0.1-py3-none.whl --user
并可以立即开始使用您的工具:
$ cli --help
这是一个非常简单的描述,有很多东西需要学习,但也有大量有用的材料可以指导您完成整个过程。
如果您想了解有关该主题的更多信息:作为快速入门参考,我会推荐优秀的PyPA 打包指南 https://packaging.python.org/。包装用click
命令,他们自己的文档就足够了 http://click.pocoo.org/5/setuptools/.
- 我鼓励你使用
pip
用于分发和包装开发(如果适用),因为它是一个标准工具。