我正在维护一个包含许多实用函数的内部python包。作为这个包的一部分,我包含了一个项目生成器
console_script
它使用包附带的自定义模板调用cookiecutter。当使用安装包时,这可以正常工作
pip
(基本上,作为sdist)。
我想让人们使用
conda
尽可能多,因此这很不方便,因为使用
pip公司
不
康达
. 因此,我正在使用
python setup.py bdist_conda
Anaconda安装中包含的方式。afaict,这对于另一个内部包很有效。
然而,当我尝试创建当前包时
bdist_conda
creation byte编译包中的所有python文件,当然也编译模板文件。这会导致在运行时由于jinja字符串而出现语法错误
python设置。py bdist\u conda公司
:
byte-compiling build/bdist.linux-x86_64/dumb/home/bilderbuchi/anaconda3/lib/python3.5/site-packages/mypkg/project_template/{{cookiecutter.project_name_simplified}}/{{cookiecutter.project_name_simplified}}.py to {{cookiecutter.project_name_simplified}}.cpython-35.pyc
File "/path/to/mypkg/project_template/{{cookiecutter.project_name_simplified}}/{{cookiecutter.project_name_simplified}}.py", line 4
{%- if cookiecutter.command_line_interface == 'argparse' %}
^
SyntaxError: invalid syntax
我也可以用普通的
python setup.py bdist
所以我可以排除康达是罪魁祸首。
我使用
MANIFEST.in
包含
recursive-include mypkg/project_template *
和
include_package_data = True
在基于setuptools的
setup.py
.
有没有(更好的)方法将cookiecutter模板与一些包一起提供?正如我所说,当与
pip公司
/sdist,但失败
bdist
.
或者,是否有方法禁止编译给定文件集的bdist字节?
模板无法联机,这就是为什么我想将其包含在包中。
我还考虑将模板单独放置在其他位置,但用户在使用project generator时依赖于该位置(例如网络驱动器)。
我考虑将其添加为zip文件,但从版本控制的角度来看,除了这一点非常不方便之外,
apparently
,用户将在下次运行时被提示删除现有模板(我猜已解压缩到某个用户位置),因此我宁愿避免这样做。
-
Cookiecutter版本:1.6.0
-
Python版本:3.5
-
设置工具38.5.1
-
操作系统:Linux
编辑:我也发布了这个
in the cookiecutter issue tracker
,但到目前为止没有得到任何反馈。