我有一个具有以下结构的 Python 包:
??? setup.cfg
??? setup.py
??? src
??? myproject
??? base.py
??? __init__.py
??? version.py
Run Code Online (Sandbox Code Playgroud)
在 中setup.cfg,版本定义为attr:
[metadata]
name = myproject
version = attr: myproject.version.__version__
Run Code Online (Sandbox Code Playgroud)
随着version.py被简单地说:
[metadata]
name = myproject
version = attr: myproject.version.__version__
Run Code Online (Sandbox Code Playgroud)
该软件包具有 中列出的依赖项setup.cfg。另一方面,包的顶级__init__.py导入包的一些对象:
__version__ = "1.2.3"
Run Code Online (Sandbox Code Playgroud)
而且,显然,base.py从依赖项中导入了一些对象。
现在的问题是,如果我python setup.py在未安装依赖项时尝试使用,我有一个ModuleNotFoundError/ ImportError,因为__init__.py导入了导入这些依赖项的对象(这对于管理版本文件的 Python 文档中的案例 6 非常重要):
from myproject.base import Stuff
__all__ = ["Stuff"]
Run Code Online (Sandbox Code Playgroud)
这使得无法安装依赖项。那么针对版本文件的最佳策略应该是什么? …
我Tabular在 Vim 中使用来将 Python 中数据文件的定义与一些长注释对齐:
# A long comment here with many words
param_1 = 42
parameter_2 = 0.25
# Another long comment
para_3 = 'abc'
parameter_number_4 = some_var
Run Code Online (Sandbox Code Playgroud)
如果我Tabularize /=在选择上使用,评论也会被处理,因为有些评论很长,我得到:
# A long comment here with many words
param_1 = 42
parameter_2 = 0.25
# Another long comment
para_3 = 'abc'
parameter_number_4 = some_var
Run Code Online (Sandbox Code Playgroud)
这不是我想要的。#有没有办法忽略选择中以“”开头的行?为了获得这样的东西:
# A long comment here with many words
param_1 = 42
parameter_2 = 0.25
# Another long comment …Run Code Online (Sandbox Code Playgroud)